Класс CWinApp

Базовый класс, от которого необходимо наследовать объект приложения Windows.

Синтаксис

class CWinApp : public CWinThread

Участники

Открытые конструкторы

Имя Описание
CWinApp::CWinApp Формирует объект CWinApp.

Открытые методы

Имя Описание
CWinApp::AddDocTemplate Добавляет шаблон документа в список доступных шаблонов документов приложения.
CWinApp::AddToRecentFileList Добавляет имя файла в последний используемый список файлов (MRU).
CWinApp::ApplicationRecoveryCallback Вызывается платформой при неожиданном выходе приложения.
CWinApp::CloseAllDocuments Закрывает все открытые документы.
CWinApp::CreatePrinterDC Создает контекст устройства принтера.
CWinApp::D elRegTree Удаляет указанный ключ и все его вложенные ключи.
CWinApp::D oMessageBox Реализует AfxMessageBox для приложения.
CWinApp::D oWaitCursor Включает и отключает курсор ожидания.
CWinApp::EnableD2DSupport Включает поддержку D2D приложения. Данный метод следует вызывать до инициализации основного окна.
CWinApp::EnableHtmlHelp Реализует HTMLHelp для приложения, а не WinHelp.
CWinApp::EnableTaskbarInteraction Включает взаимодействие с панелью задач.
CWinApp::ExitInstance Переопределите, чтобы очистить при завершении работы приложения.
CWinApp::GetApplicationRecoveryParameter Извлекает входной параметр для метода восстановления приложения.
CWinApp::GetApplicationRecoveryPingInterval Возвращает время, которое диспетчер перезапуска ожидает возврата функции обратного вызова восстановления.
CWinApp::GetApplicationRestartFlags Возвращает флаги диспетчера перезапуска.
CWinApp::GetAppRegistryKey Возвращает ключ для HKEY_CURRENT_USER\"Software"\RegistryKey\ProfileName.
CWinApp::GetDataRecoveryHandler Возвращает обработчик восстановления данных для этого экземпляра приложения.
CWinApp::GetFirstDocTemplatePosition Извлекает позицию первого шаблона документа.
CWinApp::GetHelpMode Извлекает тип справки, используемой приложением.
CWinApp::GetNextDocTemplate Извлекает позицию шаблона документа. Можно использовать рекурсивно.
CWinApp::GetPrinterDeviceDefaults Извлекает устройство принтера по умолчанию.
CWinApp::GetProfileBinary Извлекает двоичные данные из записи в приложении. INI-файл.
CWinApp::GetProfileInt Извлекает целое число из записи в приложении. INI-файл.
CWinApp::GetProfileString Извлекает строку из записи в приложении. INI-файл.
CWinApp::GetSectionKey Возвращает ключ для HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\lpszSection.
CWinApp::HideApplication Скрывает приложение перед закрытием всех документов.
CWinApp::HtmlHelp Вызывает функцию HTMLHelp Windows.
CWinApp::InitInstance Переопределите выполнение инициализации экземпляра Windows, например создание объектов окна.
CWinApp::IsTaskbarInteractionEnabled Указывает, включено ли взаимодействие с панелью задач Windows 7.
CWinApp::LoadCursor Загружает ресурс курсора.
CWinApp::LoadIcon Загружает ресурс значка.
CWinApp::LoadOEMCursor Загружает предопределенный курсор windows OEM, который OCR_ константы, указанные в WINDOWS.H.
CWinApp::LoadOEMIcon Загружает предопределенный значок windows OEM, указанный в windows.H константами OIC_ .
CWinApp::LoadStandardCursor Загружает предопределенный курсор Windows, заданный константами IDC_ в WINDOWS.H.
CWinApp::LoadStandardIcon Загружает предопределенный значок Windows, указывающий константы IDI_ в WINDOWS.H.
CWinApp::OnDDECommand Вызывается платформой в ответ на команду динамического обмена данными (DDE).
CWinApp::OnIdle Переопределите для выполнения обработки бездействия приложения.
CWinApp::OpenDocumentFile Вызывается платформой для открытия документа из файла.
CWinApp::P arseCommandLine Анализирует отдельные параметры и флаги в командной строке.
CWinApp::P reTranslateMessage Фильтрует сообщения перед отправкой в функции Windows TranslateMessage и DispatchMessage.
CWinApp::P rocessMessageFilter Перехватывает некоторые сообщения, прежде чем они достигают приложения.
CWinApp::P rocessShellCommand Обрабатывает аргументы и флаги командной строки.
CWinApp::P rocessWndProcException Перехватывает все необработанные исключения, создаваемые обработчиками сообщений и команд приложения.
CWinApp::Register Выполняет настраиваемую регистрацию.
CWinApp::RegisterWithRestartManager Регистрирует приложение в диспетчере перезапуска.
CWinApp::ReopenPreviousFilesAtRestart Определяет, повторно ли диспетчер перезапуска открывает файлы, открытые при неожиданном завершении работы приложения.
CWinApp::RestartInstance Обрабатывает перезапуск приложения, инициированный диспетчером перезапуска.
CWinApp::RestoreAutosavedFilesAtRestart Определяет, восстанавливает ли диспетчер перезапуска автоматически сохраненные файлы при перезапуске приложения.
CWinApp::Run Запускает цикл сообщений по умолчанию. Переопределите, чтобы настроить цикл сообщений.
CWinApp::RunAutomated Проверяет командную строку приложения для параметра /Automation . Является устаревшей. Вместо этого используйте значение в CCommandLineInfo::m_bRunAutomated после вызова ParseCommandLine.
CWinApp::RunEmbedded Проверяет командную строку приложения для параметра /Embedding . Является устаревшей. Вместо этого используйте значение в CCommandLineInfo::m_bRunEmbedded после вызова ParseCommandLine.
CWinApp::SaveAllModified Предложит пользователю сохранить все измененные документы.
CWinApp::SelectPrinter Выбирает принтер, указанный пользователем, через диалоговое окно печати.
CWinApp::SetHelpMode Задает и инициализирует тип справки, используемой приложением.
CWinApp::SupportsApplicationRecovery Определяет, восстанавливает ли диспетчер перезапуска приложение, которое неожиданно завершило работу.
CWinApp::SupportsAutosaveAtInterval Определяет, автоматически ли диспетчер перезапуска автоматически открывает документы с регулярным интервалом.
CWinApp::SupportsAutosaveAtRestart Определяет, автоматически ли диспетчер перезапускает все открытые документы при перезапуске приложения.
CWinApp::SupportsRestartManager Определяет, поддерживает ли приложение диспетчер перезапуска.
CWinApp::Unregister Отменяет регистрацию всех известных объектов CWinApp .
CWinApp::WinHelp Вызывает функцию WinHelp Windows.
CWinApp::WriteProfileBinary Записывает двоичные данные в запись в приложении. INI-файл.
CWinApp::WriteProfileInt Записывает целое число в запись в приложении. INI-файл.
CWinApp::WriteProfileString Записывает строку в запись в приложении. INI-файл.

Защищенные методы

Имя Описание
CWinApp::EnableShellOpen Позволяет пользователю открывать файлы данных из диспетчера файлов Windows.
CWinApp::LoadStdProfile Параметры Загружает стандарт. Параметры файла INI и включает функцию списка файлов MRU.
CWinApp::OnContextHelp Обрабатывает справку SHIFT+F1 в приложении.
CWinApp::OnFileNew Реализует команду ID_FILE_NEW.
CWinApp::OnFileOpen Реализует команду ID_FILE_OPEN.
CWinApp::OnFilePrintSetup Реализует команду ID_FILE_PRINT_SETUP.
CWinApp::OnHelp Обрабатывает справку F1 в приложении (с использованием текущего контекста).
CWinApp::OnHelpFinder Обрабатывает команды ID_HELP_FINDER и ID_DEFAULT_HELP.
CWinApp::OnHelpIndex Обрабатывает команду ID_HELP_INDEX и предоставляет раздел справки по умолчанию.
CWinApp::OnHelpUsing Обрабатывает команду ID_HELP_USING.
CWinApp::RegisterShellFileTypes Регистрирует все типы документов приложения в диспетчере файлов Windows.
CWinApp::SetAppID Явным образом задает идентификатор пользовательской модели приложения для приложения. Этот метод должен вызываться перед тем, как любой пользовательский интерфейс будет представлен пользователю (лучшее место — конструктор приложения).
CWinApp::SetRegistryKey Приводит к тому, что параметры приложения будут храниться в реестре вместо . INI-файлы.
CWinApp::UnregisterShellFileTypes Отменяет регистрацию всех типов документов приложения с помощью диспетчера файлов Windows.

Открытые члены данных

Имя Описание
CWinApp::m_bHelpMode Указывает, находится ли пользователь в режиме контекста справки (обычно вызывается с помощью SHIFT+F1).
CWinApp::m_eHelpType Указывает тип справки, используемой приложением.
CWinApp::m_hInstance Определяет текущий экземпляр приложения.
CWinApp::m_lpCmdLine Указывает на строку, завершающую значение NULL, которая указывает командную строку для приложения.
CWinApp::m_nCmdShow Указывает, как окно должно отображаться изначально.
CWinApp::m_pActiveWnd Указатель на главное окно приложения контейнера при активном сервере OLE.
CWinApp::m_pszAppID Идентификатор пользовательской модели приложения.
CWinApp::m_pszAppName Указывает имя приложения.
CWinApp::m_pszExeName Имя модуля приложения.
CWinApp::m_pszHelpFilePath Путь к файлу справки приложения.
CWinApp::m_pszProfileName Приложение . Имя файла INI.
CWinApp::m_pszRegistryKey Используется для определения полного раздела реестра для хранения параметров профиля приложения.

Защищенные члены данных

Имя Описание
CWinApp::m_dwRestartManagerSupportFlags Флаги, определяющие поведение диспетчера перезапуска.
CWinApp::m_nAutosaveInterval Длительность времени в миллисекундах между автосохранением.
CWinApp::m_pDataRecoveryHandler Указатель на обработчик восстановления данных для приложения.

Замечания

Объект приложения предоставляет функции-члены для инициализации приложения (и каждого экземпляра) и запуска приложения.

Каждое приложение, использующее классы Microsoft Foundation, может содержать только один объект, производный от CWinApp. Этот объект создается при создании других глобальных объектов C++ и уже доступен при вызове WinMain функции Windows, предоставляемой библиотекой классов Microsoft Foundation. Объявите производный CWinApp объект на глобальном уровне.

При наследовав класс приложения, CWinAppпереопределите функцию-член InitInstance , чтобы создать главный объект окна приложения.

CWinApp Помимо функций-членов библиотека классов Microsoft Foundation предоставляет следующие глобальные функции для доступа к CWinApp объекту и другим глобальным сведениям:

  • AfxGetApp получает указатель на CWinApp объект.

  • AfxGetInstanceHandle получает дескриптор для текущего экземпляра приложения.

  • AfxGetResourceHandle получает дескриптор ресурсов приложения.

  • AfxGetAppName получает указатель на строку, содержащую имя приложения. Кроме того, если у вас есть указатель на CWinApp объект, используйте m_pszExeName для получения имени приложения.

Дополнительные сведения о классе см . в разделе CWinApp: Класс приложения для получения дополнительных CWinApp сведений о классе, включая обзор следующих элементов:

  • CWinApp-производный код, написанный мастером приложений.

  • CWinAppРоль в последовательности выполнения приложения.

  • CWinAppРеализации функций-членов по умолчанию.

  • CWinAppКлючи переопределяются.

Член m_hPrevInstance данных больше не существует. Чтобы определить, запущен ли другой экземпляр приложения, используйте именованный мьютекс. Если открытие мьютекса завершается ошибкой, то нет других экземпляров запущенного приложения.

Иерархия наследования

CObject

CCmdTarget

Cwinthread

CWinApp

Требования

Заголовок: afxwin.h

CWinApp::AddDocTemplate

Вызовите эту функцию-член, чтобы добавить шаблон документа в список доступных шаблонов документов, которые поддерживает приложение.

void AddDocTemplate(CDocTemplate* pTemplate);

Параметры

pTemplate
Указатель на CDocTemplate добавляемый объект.

Замечания

Перед вызовом RegisterShellFileTypes необходимо добавить все шаблоны документов в приложение.

Пример

// The following code is produced by the Application Wizard when you
// choose the MDI (multiple document interface) option.
CMultiDocTemplate *pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE,
                                     RUNTIME_CLASS(CMyDoc),
                                     RUNTIME_CLASS(CChildFrame), // custom MDI child frame
                                     RUNTIME_CLASS(CMyView));
if (!pDocTemplate)
   return FALSE;
AddDocTemplate(pDocTemplate);

CWinApp::AddToRecentFileList

Вызовите эту функцию-член, чтобы добавить lpszPathName в список файлов MRU.

virtual void AddToRecentFileList(LPCTSTR lpszPathName);

Параметры

lpszPathName
Путь к файлу.

Замечания

Перед использованием этой функции-члена необходимо вызвать функцию-член LoadStdProfile Параметры, чтобы загрузить текущий список файлов MRU.

Платформа вызывает эту функцию-член, когда открывает файл или выполняет команду "Сохранить как", чтобы сохранить файл с новым именем.

Пример

// This adds the pathname c:\temp\test.doc to the top of
// the most recently used (MRU) list in the File menu.
AfxGetApp()->AddToRecentFileList(_T("c:\\temp\\test.doc"));

CWinApp::ApplicationRecoveryCallback

Вызывается платформой при неожиданном выходе приложения.

virtual DWORD ApplicationRecoveryCallback(LPVOID lpvParam);

Параметры

lpvParam
[in] Зарезервировано для дальнейшего использования.

Возвращаемое значение

Значение 0, если этот метод выполнен успешно; ненулевое значение, если возникает ошибка.

Замечания

Если приложение поддерживает диспетчер перезапуска, платформа вызывает эту функцию при неожиданном выходе приложения.

Реализация по умолчанию ApplicationRecoveryCallback используется CDataRecoveryHandler для сохранения списка открытых документов в реестре. Этот метод не выполняет автоматическое сохранение файлов.

Чтобы настроить поведение, переопределите эту функцию в производном классе CWinApp или передайте собственный метод восстановления приложения в качестве параметра в CWinApp::RegisterWithRestartManager.

CWinApp::CloseAllDocuments

Вызовите эту функцию-член, чтобы закрыть все открытые документы перед выходом.

void CloseAllDocuments(BOOL bEndSession);

Параметры

bEndSession
Указывает, завершается ли сеанс Windows. Значение TRUE, если сеанс завершается; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Вызов HideApplication перед вызовомCloseAllDocuments.

CWinApp::CreatePrinterDC

Вызовите эту функцию-член, чтобы создать контекст устройства принтера (DC) из выбранного принтера.

BOOL CreatePrinterDC(CDC& dc);

Параметры

dc
Ссылка на контекст устройства принтера.

Возвращаемое значение

Ненулевое значение, если контекст устройства принтера успешно создан; в противном случае — 0.

Замечания

CreatePrinterDC инициализирует контекст устройства, который передается по ссылке, поэтому его можно использовать для печати.

Если функция выполнена успешно, после завершения печати необходимо уничтожить контекст устройства. Вы можете разрешить деструктору объекта CDC сделать это или явно сделать это, вызвав CDC::D eleteDC.

CWinApp::CWinApp

CWinApp Создает объект и передает lpszAppName в качестве имени приложения.

CWinApp(LPCTSTR lpszAppName = NULL);

Параметры

lpszAppName
Строка, завершающаяся значением NULL, содержащая имя приложения, которое использует Windows. Если этот аргумент не указан или имеет значение NULL, CWinApp использует строку ресурса AFX_IDS_APP_TITLE или имя файла исполняемого файла.

Замечания

Необходимо создать один глобальный объект производного CWinAppкласса. В приложении может быть только один CWinApp объект. Конструктор сохраняет указатель на CWinApp объект, чтобы WinMain вызвать функции-члены объекта для инициализации и запуска приложения.

CWinApp::D elRegTree

Удаляет определенный раздел реестра и все его подразделы.

LONG DelRegTree(
    HKEY hParentKey,
    const CString& strKeyName);

LONG DelRegTree(
    HKEY hParentKey,
    const CString& strKeyName,
    CAtlTransactionManager* pTM = NULL);

Параметры

hParentKey
Обработка раздела реестра.

strKeyName
Имя раздела реестра, который необходимо удалить.

Ptm
Указатель на объект CAtlTransactionManager.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение ERROR_SUCCESS. Если функция завершается ошибкой, возвращаемое значение представляет собой ненулевой код ошибки, определенный в Winerror.h.

Замечания

Вызовите эту функцию, чтобы удалить указанный ключ и его вложенные ключи.

CWinApp::D oMessageBox

Платформа вызывает эту функцию-член для реализации поля сообщения для глобальной функции AfxMessageBox.

virtual int DoMessageBox(
    LPCTSTR lpszPrompt,
    UINT nType,
    UINT nIDPrompt);

Параметры

lpszPrompt
Адрес текста в поле сообщения.

nType
Стиль поля сообщения.

nIDPrompt
Индекс в строке контекста справки.

Возвращаемое значение

Возвращает те же значения, что AfxMessageBoxи .

Замечания

Не вызывайте эту функцию-член, чтобы открыть окно сообщения; вместо этого используйте AfxMessageBox .

Переопределите эту функцию-член, чтобы настроить обработку вызовов AfxMessageBox на уровне приложения.

CWinApp::D oWaitCursor

Эта функция-член вызывается платформой для реализации CWaitCursor, CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor и CCmdTarget::RestoreWaitCursor.

virtual void DoWaitCursor(int nCode);

Параметры

nCode
Если этот параметр равен 1, появится курсор ожидания. Если значение равно 0, курсор ожидания восстанавливается без увеличения числа ссылок. Если значение -1, курсор ожидания заканчивается.

Замечания

По умолчанию реализуется курсор по часовой очкам. DoWaitCursor поддерживает число ссылок. При положительном срабатывании отображается курсор с часовой очками.

Хотя обычно не вызывается DoWaitCursor напрямую, можно переопределить эту функцию-член, чтобы изменить курсор ожидания или выполнить дополнительную обработку во время отображения курсора ожидания.

Чтобы упростить более упрощенный способ реализации курсора ожидания, используйте CWaitCursor.

Пример

// The following example shows how to display the
// hourglass cursor during some lengthy processing
void CMdiView::OnLButtonDown(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   UNREFERENCED_PARAMETER(point);

   AfxGetApp()->DoWaitCursor(1); // 1->>display the hourglass cursor

   // do some lengthy processing
   Sleep(1000);

   AfxGetApp()->DoWaitCursor(-1); // -1->>remove the hourglass cursor
}

// The next example shows DoWaitCursor with parameter 0. It restores
// the hourglass cursor.
void CMdiView::OnMButtonDown(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   UNREFERENCED_PARAMETER(point);

   AfxGetApp()->DoWaitCursor(1); // display the hourglass cursor

   // do some lengthy processing

   // The message box will normally change the cursor to
   // the standard arrow cursor, and leave the cursor in
   // as the standard arrow cursor when the message box is
   // closed.
   AfxMessageBox(_T("DoWaitCursor Sample"));

   // Call DoWaitCursor with parameter 0 to restore
   // the cursor back to the hourglass cursor.
   AfxGetApp()->DoWaitCursor(0);

   // do some more lengthy processing
   Sleep(1000);

   AfxGetApp()->DoWaitCursor(-1); // remove the hourglass cursor
}

CWinApp::EnableD2DSupport

Требуется Visual Studio 2010 с пакетом обновления 1 (SP1).

Включает поддержку D2D приложения. Данный метод следует вызывать до инициализации основного окна.

BOOL EnableD2DSupport(
    D2D1_FACTORY_TYPE d2dFactoryType = D2D1_FACTORY_TYPE_SINGLE_THREADED,
    DWRITE_FACTORY_TYPE writeFactoryType = DWRITE_FACTORY_TYPE_SHARED);

Параметры

d2dFactoryType
Модель потоков фабрики D2D и ресурсы, которые он создает.

writeFactoryType
Значение, указывающее, будет ли объект фабрики записи общим или изолированным.

Возвращаемое значение

Возвращает значение TRUE, если включена поддержка D2D, false — в противном случае

CWinApp::EnableHtmlHelp

Вызовите эту функцию-член из конструктора производного CWinAppкласса, чтобы использовать HTMLHelp для справки приложения.

void EnableHtmlHelp();

Замечания

CWinApp::EnableShellOpen

Вызовите эту функцию, как правило, из InitInstance переопределения, чтобы пользователи приложения могли открывать файлы данных при двойном щелчке файлов из диспетчера файлов Windows.

void EnableShellOpen();

Замечания

Вызовите функцию-член в сочетании RegisterShellFileTypes с этой функцией или предоставьте . REG-файл с приложением для ручной регистрации типов документов.

Пример

// The following code fragment is from CMyApp::InitInstance.
// CMyApp is a CWinApp-derived class.

// enable file manager drag/drop and DDE Execute open
EnableShellOpen();
RegisterShellFileTypes();

CWinApp::EnableTaskbarInteraction

Включает взаимодействие с панелью задач.

BOOL EnableTaskbarInteraction(BOOL bEnable = TRUE);

Параметры

bEnable
Указывает, следует ли включить взаимодействие с панелью задач Windows 7 (TRUE) или отключить (FALSE).

Возвращаемое значение

Возвращает значение TRUE, если взаимодействие с панелью задач может быть включено или отключено.

Замечания

Этот метод должен вызываться перед созданием главного окна, в противном случае он утверждает и возвращает ЗНАЧЕНИЕ FALSE.

CWinApp::ExitInstance

Вызывается платформой из Run функции-члена, чтобы выйти из этого экземпляра приложения.

virtual int ExitInstance();

Возвращаемое значение

Код выхода приложения; Значение 0 указывает на отсутствие ошибок и значения, превышающие 0, указывают на ошибку. Это значение используется в качестве возвращаемого значения.WinMain

Замечания

Не вызывайте эту функцию-член из любого места, но в функции-члене Run .

Реализация этой функции по умолчанию записывает параметры платформы в приложение. INI-файл. Переопределите эту функцию, чтобы очистить после завершения работы приложения.

Пример

int CMyApp::ExitInstance()
{
   if (m_pMySampleMem)
      delete m_pMySampleMem;

   DoCleanup();

   return CWinApp::ExitInstance();
}

CWinApp::GetApplicationRecoveryParameter

Извлекает входной параметр для метода восстановления приложения.

virtual LPVOID GetApplicationRecoveryParameter();

Возвращаемое значение

Входной параметр по умолчанию для метода восстановления приложения.

Замечания

Поведение по умолчанию этой функции возвращает ЗНАЧЕНИЕ NULL.

Дополнительные сведения см. в разделе CWinApp::ApplicationRecoveryCallback.

CWinApp::GetApplicationRecoveryPingInterval

Возвращает время, которое диспетчер перезапуска ожидает возврата функции обратного вызова восстановления.

virtual DWORD GetApplicationRecoveryPingInterval();

Возвращаемое значение

Длительность времени в миллисекундах.

Замечания

Когда приложение, зарегистрированное в диспетчере перезапуска, неожиданно завершает работу, приложение пытается сохранить открытые документы и вызывает функцию обратного вызова восстановления. Функция обратного вызова восстановления по умолчанию — CWinApp::ApplicationRecoveryCallback.

Время, которое платформа ожидает возврата функции обратного вызова восстановления, является интервалом связи. Интервал проверки пинга можно настроить, переопределив CWinApp::GetApplicationRecoveryPingInterval или предоставив пользовательское значение RegisterWithRestartManager.

CWinApp::GetApplicationRestartFlags

Возвращает флаги диспетчера перезапуска.

virtual DWORD GetApplicationRestartFlags();

Возвращаемое значение

Флаги диспетчера перезапуска. Реализация по умолчанию возвращает значение 0.

Замечания

Флаги диспетчера перезапуска не влияют на реализацию по умолчанию. Они предоставляются для дальнейшего использования.

Флаги задаются при регистрации приложения в диспетчере перезапуска с помощью CWinApp::RegisterWithRestartManager.

Возможные значения флагов диспетчера перезапуска приведены следующим образом:

  • RESTART_NO_CRASH

  • RESTART_NO_HANG

  • RESTART_NO_PATCH

  • RESTART_NO_REBOOT

CWinApp::GetAppRegistryKey

Возвращает ключ для HKEY_CURRENT_USER\"Software"\RegistryKey\ProfileName.

HKEY GetAppRegistryKey(CAtlTransactionManager* pTM = NULL);

Параметры

Ptm
Указатель на CAtlTransactionManager объект.

Возвращаемое значение

Ключ приложения, если функция выполнена успешно; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

CWinApp::GetDataRecoveryHandler

Возвращает обработчик восстановления данных для этого экземпляра приложения.

virtual CDataRecoveryHandler *GetDataRecoveryHandler();

Возвращаемое значение

Обработчик восстановления данных для этого экземпляра приложения.

Замечания

Каждое приложение, использующее диспетчер перезапуска, должно иметь один экземпляр класса CDataRecoveryHandler. Этот класс отвечает за мониторинг открытых документов и файлов автосохранения. Поведение CDataRecoveryHandler зависит от конфигурации диспетчера перезапуска. Дополнительные сведения см. в разделе CDataRecoveryHandler Class.

Этот метод возвращает значение NULL в операционных системах до Windows Vista. Диспетчер перезапуска не поддерживается в операционных системах до Windows Vista.

Если в настоящее время у приложения нет обработчика восстановления данных, этот метод создает один и возвращает указатель на него.

CWinApp::GetFirstDocTemplatePosition

Возвращает позицию первого шаблона документа в приложении.

POSITION GetFirstDocTemplatePosition() const;

Возвращаемое значение

Значение POSITION, которое можно использовать для итерации или извлечения указателя объекта; ЗНАЧЕНИЕ NULL, если список пуст.

Замечания

Используйте значение POSITION, возвращаемое в вызове GetNextDocTemplate, чтобы получить первый объект CDocTemplate.

CWinApp::GetHelpMode

Извлекает тип справки, используемой приложением.

AFX_HELP_TYPE GetHelpMode();

Возвращаемое значение

Тип справки, используемый приложением. Дополнительные сведения см. в разделе CWinApp::m_eHelpType .

CWinApp::GetNextDocTemplate

Возвращает шаблон документа, определяемый по pos, а затем задает значение POSITION.

CDocTemplate* GetNextDocTemplate(POSITION& pos) const;

Параметры

pos
Ссылка на значение POSITION, возвращаемое предыдущим вызовом GetNextDocTemplate или GetFirstDocTemplatePosition. Значение обновляется до следующей позиции с помощью этого вызова.

Возвращаемое значение

Указатель на объект CDocTemplate .

Замечания

Вы можете использовать GetNextDocTemplate в цикле итерации пересылки, если установить начальную позицию с вызовом GetFirstDocTemplatePosition.

Необходимо убедиться, что значение POSITION является допустимым. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.

Если полученный шаблон документа является последним доступным, новое значение pos имеет значение NULL.

CWinApp::GetPrinterDeviceDefaults

Вызовите эту функцию-член, чтобы подготовить контекст устройства принтера для печати.

BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);

Параметры

pPrintDlg
Указатель на структуру PRINTDLG .

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Извлекает текущий принтер по умолчанию из Windows. INI-файл по мере необходимости или использует последнюю конфигурацию принтера, заданную пользователем в программе установки печати.

Пример

void CMyApp::SetLandscapeMode()
{
   PRINTDLG pd;
   pd.lStructSize = (DWORD)sizeof(PRINTDLG);
   BOOL bRet = GetPrinterDeviceDefaults(&pd);
   if (bRet)
   {
      // protect memory handle with ::GlobalLock and ::GlobalUnlock
      DEVMODE FAR *pDevMode = (DEVMODE FAR*)::GlobalLock(pd.hDevMode);
      // set orientation to landscape
      pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
      ::GlobalUnlock(pd.hDevMode);
   }
}

CWinApp::GetProfileBinary

Вызовите эту функцию-член, чтобы получить двоичные данные из записи в указанном разделе реестра приложения или. INI-файл.

BOOL GetProfileBinary(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    LPBYTE* ppData,
    UINT* pBytes);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, значение которой требуется извлечь.

ppData
Указывает на указатель, который получит адрес данных.

pBytes
Указывает на UINT, который получит размер данных (в байтах).

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член не учитывает регистр, поэтому строки в параметрах lpszSection и lpszEntry могут отличаться в случае.

Примечание.

GetProfileBinary выделяет буфер и возвращает адрес в * ppData. Вызывающий объект отвечает за освобождение буфера с помощью удаления [].

Важно!

Данные, возвращаемые этой функцией, не обязательно завершаются null, и вызывающий объект должен выполнить проверку. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Пример

CWinApp* pApp = AfxGetApp();

const TCHAR* pszKey = _T("My Section");
struct complex {
  double re, im;
} myData = { 1.4142, -0.5 };

// Write the information to the registry.

pApp->WriteProfileBinary(pszKey, _T("ComplexData"), (LPBYTE)&myData, 
   sizeof(myData));

// Read the information from the registry.

complex* pData;
UINT n;
BOOL ret = pApp->GetProfileBinary(pszKey, _T("ComplexData"), (LPBYTE*)&pData, 
   &n);

ASSERT(ret);
ASSERT(n == sizeof(complex));
ASSERT(myData.re == pData->re);
ASSERT(myData.im == pData->im);
delete [] pData; // free the buffer

Дополнительные примеры см. в разделе CWinApp::WriteProfileBinary.

CWinApp::GetProfileInt

Вызовите эту функцию-член, чтобы получить значение целого числа из записи в указанном разделе реестра приложения или. INI-файл.

UINT GetProfileInt(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    int nDefault);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, значение которой требуется извлечь.

nDefault
Указывает значение по умолчанию, возвращаемое, если платформа не может найти запись.

Возвращаемое значение

Целочисленное значение строки, следующей за указанной записью, если функция выполнена успешно. Возвращаемое значение — это значение параметра nDefault , если функция не находит запись. Возвращаемое значение равно 0, если значение, соответствующее указанной записи, не является целым числом.

Эта функция-член поддерживает шестнадцатеричную нотацию для значения в . INI-файл. При получении целого числа со знаком следует привести значение в целое intчисло.

Замечания

Эта функция-член не учитывает регистр, поэтому строки в параметрах lpszSection и lpszEntry могут отличаться в случае.

Важно!

Данные, возвращаемые этой функцией, не обязательно завершаются null, и вызывающий объект должен выполнить проверку. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Пример

CWinApp *pApp = AfxGetApp();

const TCHAR *pszKey = _T("My Section");
const TCHAR *pszName = _T("Julian");
int iAge = 26;

// Write the information to the registry.

pApp->WriteProfileString(pszKey, _T("Name"), pszName);
pApp->WriteProfileInt(pszKey, _T("Age"), iAge);

// Read the information from the registry.

CString strName = pApp->GetProfileString(pszKey, _T("Name"));
int iAge2 = pApp->GetProfileInt(pszKey, _T("Age"), 0);

ASSERT(strName == pszName);
ASSERT(iAge2 == iAge);

Дополнительные примеры см. в разделе CWinApp::WriteProfileInt.

CWinApp::GetProfileString

Вызовите эту функцию-член, чтобы получить строку, связанную с записью в указанном разделе в реестре приложения или. INI-файл.

CString GetProfileString(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    LPCTSTR lpszDefault = NULL);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, строка которой должна быть извлечена. Это значение не должно иметь значение NULL.

lpszDefault
Указывает на строковое значение по умолчанию для указанной записи, если запись не найдена в файле инициализации.

Возвращаемое значение

Возвращаемое значение — это строка из приложения. INI-файл или lpszDefault , если строка не найдена. Максимальная длина строки, поддерживаемая платформой, _MAX_PATH. Если значение lpszDefault равно NULL, возвращаемое значение является пустой строкой.

Замечания

Важно!

Данные, возвращаемые этой функцией, не обязательно завершаются null, и вызывающий объект должен выполнить проверку. Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Пример

CWinApp *pApp = AfxGetApp();

CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");

pApp->WriteProfileString(strSection, strStringItem, _T("test"));

CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));

pApp->WriteProfileInt(strSection, strIntItem, 1234);

int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);

Другой пример см. в примере CWinApp ::GetProfileInt.

CWinApp::GetSectionKey

Возвращает ключ для HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\lpszSection.

HKEY GetSectionKey(
    LPCTSTR lpszSection,
    CAtlTransactionManager* pTM = NULL);

Параметры

lpszSection
Имя полученного ключа.

Ptm
Указатель на CAtlTransactionManager объект.

Возвращаемое значение

Ключ раздела, если функция выполнена успешно; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

CWinApp::HideApplication

Вызовите эту функцию-член, чтобы скрыть приложение перед закрытием открытых документов.

void HideApplication();

CWinApp::HtmlHelp

Вызовите эту функцию-член, чтобы вызвать приложение HTMLHelp.

virtual void HtmlHelp(
    DWORD_PTR dwData,
    UINT nCmd = 0x000F);

Параметры

dwData
Указывает дополнительные данные. Используемое значение зависит от значения параметра nCmd . По умолчанию это 0x000F означает HH_HELP_CONTEXT.

nCmd
Задает тип запрошенной справки. Список возможных значений и их влияние на параметр dwData см . в параметре uCommand , описанном в функциях API HtmlHelpW или HtmlHelpA в пакете SDK для Windows.

Замечания

Платформа также вызывает эту функцию для вызова приложения HTMLHelp.

Платформа автоматически закрывает приложение HTMLHelp при завершении работы приложения.

CWinApp::InitInstance

Windows позволяет одновременно запускать несколько копий одной программы.

virtual BOOL InitInstance();

Возвращаемое значение

Ненулевое значение, если инициализация выполнена успешно; в противном случае — 0.

Замечания

Инициализация приложений концептуально разделена на два раздела: однократная инициализация приложения, которая выполняется при первом запуске программы, а также инициализация экземпляра, которая выполняется при каждом запуске копии программы, включая первый раз. Реализация платформы WinMain вызывает эту функцию.

Переопределите InitInstance , чтобы инициализировать каждый новый экземпляр приложения, работающего в Windows. Как правило, переопределяется InitInstance для создания объекта главного окна и задания CWinThread::m_pMainWnd элемента данных указывать на это окно. Дополнительные сведения о переопределении этой функции-члена см. в разделе CWinApp: Класс приложения.

Примечание.

Приложения MFC должны быть инициализированы в виде однопоточной квартиры (STA). При вызове CoInitializeEx в InitInstance переопределении укажите COINIT_APARTMENTTHREADED (а не COINIT_MULTITHREADED).

Пример

// AppWizard implements the InitInstance overridable function 
// according to options you select.  For example, the multiple document
// interface (MDI) option was chosen for the AppWizard code created
// below. You can add other per-instance initializations to the code
// created by AppWizard.

BOOL CMFCListViewApp::InitInstance()
{
   AfxSetAmbientActCtx(FALSE);
   // Remainder of function definition omitted.

   CWinApp::InitInstance();

   // Initialize OLE libraries
   if (!AfxOleInit())
   {
      AfxMessageBox(_T("OleInit failed."));
      return FALSE;
   }

   // Standard initialization
   // If you are not using these features and wish to reduce the size
   // of your final executable, you should remove from the following
   // the specific initialization routines you do not need
   // Change the registry key under which our settings are stored
   // TODO: You should modify this string to be something appropriate
   // such as the name of your company or organization
   SetRegistryKey(_T("Local AppWizard-Generated Applications"));
   LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)
   // Register the application's document templates.  Document templates
   //  serve as the connection between documents, frame windows and views
   CMultiDocTemplate* pDocTemplate;
   pDocTemplate = new CMultiDocTemplate(IDR_MFCListViewTYPE,
      RUNTIME_CLASS(CMFCListViewDoc),
      RUNTIME_CLASS(CChildFrame), // custom MDI child frame
      RUNTIME_CLASS(CMyListView));
   if (!pDocTemplate)
      return FALSE;
   AddDocTemplate(pDocTemplate);

   // create main MDI Frame window
   CMainFrame* pMainFrame = new CMainFrame;
   if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
   {
      delete pMainFrame;
      return FALSE;
   }
   m_pMainWnd = pMainFrame;
   // call DragAcceptFiles only if there's a suffix
   //  In an MDI app, this should occur immediately after setting m_pMainWnd


   // Parse command line for standard shell commands, DDE, file open
   CCommandLineInfo cmdInfo;
   ParseCommandLine(cmdInfo);


   // Dispatch commands specified on the command line.  Will return FALSE if
   // app was launched with /RegServer, /Register, /Unregserver or /Unregister.
   if (!ProcessShellCommand(cmdInfo))
      return FALSE;
   // The main window has been initialized, so show and update it
   pMainFrame->ShowWindow(m_nCmdShow);
   pMainFrame->UpdateWindow();

   return TRUE;
}

CWinApp::IsTaskbarInteractionEnabled

Указывает, включено ли взаимодействие с панелью задач Windows 7.

virtual BOOL IsTaskbarInteractionEnabled();

Возвращаемое значение

Возвращает значение TRUE, если EnableTaskbarInteraction вызывается, а операционная система — Windows 7 или более поздней версии.

Замечания

Взаимодействие с панелью задач означает, что приложение MDI отображает содержимое дочерних элементов MDI в отдельных эскизах с вкладками, которые отображаются при нажатии указателя мыши на кнопку панели задач приложения.

CWinApp::LoadCursor

Загружает ресурс курсора с именем lpszResourceName или указан nIDResource из текущего исполняемого файла.

HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;  HCURSOR LoadCursor(UINT nIDResource) const;

Параметры

lpszResourceName
Указывает на строку, завершающую значение NULL, содержащую имя ресурса курсора. Для этого аргумента CString можно использовать.

nIDResource
Идентификатор ресурса курсора. Список ресурсов см. в разделе LoadCursor в пакете SDK для Windows.

Возвращаемое значение

Дескриптор курсора в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

LoadCursor загружает курсор в память, только если он не был загружен ранее; в противном случае он извлекает дескриптор существующего ресурса.

Используйте функцию-член LoadStandardCursor или LoadOEMCursor для доступа к предопределенным курсорам Windows.

Пример

HCURSOR hCursor;

// Load a cursor resource that was originally created using
// the Graphics Editor and assigned the i.d. IDC_MYCURSOR.
hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);

CWinApp::LoadIcon

Загружает ресурс значка с именем lpszResourceName или указан nIDResource из исполняемого файла.

HICON LoadIcon(LPCTSTR lpszResourceName) const;  HICON LoadIcon(UINT nIDResource) const;

Параметры

lpszResourceName
Указывает на строку, завершающую значение NULL, содержащую имя ресурса значка. Для этого аргумента CString также можно использовать.

nIDResource
Номер идентификатора ресурса значка.

Возвращаемое значение

Дескриптор значка в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

LoadIcon загружает значок только в том случае, если он не был загружен ранее; в противном случае он извлекает дескриптор существующего ресурса.

Функцию-член LoadStandardIcon или LoadOEMIcon можно использовать для доступа к предопределенным значкам Windows.

Примечание.

Эта функция-член вызывает функцию API Win32 LoadIcon, которая может загружать только значок, размер которого соответствует SM_CXICON и SM_CYICON системным значениям метрик.

CWinApp::LoadOEMCursor

Загружает предопределенный ресурс курсора Windows, указанный nIDCursor.

HCURSOR LoadOEMCursor(UINT nIDCursor) const;

Параметры

nIDCursor
Идентификатор константы манифеста OCR_ , указывающий предопределенный курсор Windows. Перед получением доступа к константам OCR_ в WINDOWS.H необходимо иметь #define OEMRESOURCE#include \<afxwin.h> доступ.

Возвращаемое значение

Дескриптор курсора в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

Используйте функцию-член LoadOEMCursorLoadStandardCursor для доступа к предопределенным курсорам Windows.

Пример

// In the stdafx.h file, add #define OEMRESOURCE to
// include the windows.h definitions of OCR_ values.
#define OEMRESOURCE
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions

 

HCURSOR hCursor;
// Load the predefined WIndows "size all" cursor.
hCursor = AfxGetApp()->LoadOEMCursor(OCR_SIZEALL);

CWinApp::LoadOEMIcon

Загружает предопределенный ресурс значка Windows, указанный nIDIcon.

HICON LoadOEMIcon(UINT nIDIcon) const;

Параметры

nIDIcon
Идентификатор константы манифеста OIC_ , указывающий предопределенный значок Windows. Перед доступом к константам OIC_ в WINDOWS.H необходимо иметь #define OEMRESOURCE#include \<afxwin.h> доступ к константам OIC_.

Возвращаемое значение

Дескриптор значка в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

Используйте функцию-член LoadOEMIconLoadStandardIcon для доступа к предопределенным значкам Windows.

CWinApp::LoadStandardCursor

Загружает предопределенный ресурс курсора Windows, который указывает lpszCursorName .

HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const;

Параметры

lpszCursorName
Идентификатор константы манифеста IDC_ , указывающий предопределенный курсор Windows. Эти идентификаторы определены в WINDOWS.H. В следующем списке показаны возможные предопределенные значения и значения для lpszCursorName:

  • IDC_ARROW курсор со стрелкой "Стандартный"

  • курсор IDC_IBEAM стандартной вставки текста

  • IDC_WAIT курсора Hourglass, используемый при выполнении задачи Windows с трудом

  • IDC_CROSS курсор перекрестных волос для выбора

  • IDC_UPARROW стрелка, которая указывает прямо вверх

  • IDC_SIZE Устаревшие и неподдерживаемые; использование IDC_SIZEALL

  • IDC_SIZEALL четырехконечная стрелка. Курсор, используемый для изменения размера окна.

  • IDC_ICON Устаревшие и неподдерживаемые. Используйте IDC_ARROW.

  • IDC_SIZENWSE двуглавая стрелка с концами в левом верхнем и нижнем правом углу

  • IDC_SIZENESW двуглавая стрелка с концами в правом верхнем и нижнем левом

  • IDC_SIZEWE горизонтальная двуглавая стрелка

  • IDC_SIZENS вертикальная двуглавая стрелка

Возвращаемое значение

Дескриптор курсора в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

Используйте функцию-член LoadStandardCursorLoadOEMCursor для доступа к предопределенным курсорам Windows.

Пример

HCURSOR hCursor;

// Load the predefined Windows "up arrow" cursor.
hCursor = AfxGetApp()->LoadStandardCursor(IDC_UPARROW);

CWinApp::LoadStandardIcon

Загружает предопределенный ресурс значка Windows, который указывает lpszIconName .

HICON LoadStandardIcon(LPCTSTR lpszIconName) const;

Параметры

lpszIconName
Идентификатор константы манифеста, указывающий предопределенный значок Windows. Эти идентификаторы определены в WINDOWS.H. Список возможных предопределенных значений и их описания см. в параметре lpIconName в LoadIcon в пакете SDK для Windows.

Возвращаемое значение

Дескриптор значка в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

Используйте функцию-член LoadStandardIconLoadOEMIcon для доступа к предопределенным значкам Windows.

CWinApp::LoadStdProfile Параметры

Вызовите эту функцию-член из функции-члена InitInstance , чтобы включить и загрузить список последних использованных файлов (MRU) и состояния последней предварительной версии.

void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT);

Параметры

nMaxMRU
Количество недавно используемых файлов для отслеживания.

Замечания

Если nMaxMRU равно 0, список MRU не будет поддерживаться.

CWinApp::m_bHelpMode

TRUE, если приложение находится в режиме контекста справки (обычно вызывается с ПОМОЩЬЮ SHIFT + F1); в противном случае ЗНАЧЕНИЕ FALSE.

BOOL m_bHelpMode;

Замечания

В режиме контекста справки курсор становится вопросительным знаком, и пользователь может переместить его на экран. Проверьте этот флаг, если вы хотите реализовать специальную обработку в режиме справки. m_bHelpMode — это общедоступная переменная типа BOOL.

CWinApp::m_dwRestartManagerSupportFlags

Флаги, определяющие поведение диспетчера перезапуска.

DWORD m_dwRestartManagerSupportFlags;

Замечания

Чтобы включить диспетчер перезапуска, задайте m_dwRestartManagerSupportFlags нужное поведение. В следующей таблице показаны доступные флаги.

Флаг Description
AFX_RESTART_MANAGER_SUPPORT_RESTART Приложение регистрируется с помощью CWinApp::RegisterWithRestartManager. Диспетчер перезапуска отвечает за перезапуск приложения, если он неожиданно завершает работу.
- AFX_RESTART_MANAGER_SUPPORT_RECOVERY Приложение регистрируется в диспетчере перезапуска, а диспетчер перезапуска вызывает функцию обратного вызова восстановления при перезапуске приложения. Функция обратного вызова восстановления по умолчанию — CWinApp::ApplicationRecoveryCallback.
- AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART Автосохранение включено, а диспетчер перезапуска автоматически проверит все открытые документы при перезапуске приложения.
- AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL Автосохранение включено, а диспетчер перезапуска автоматически проверит все открытые документы через регулярный интервал. Интервал определяется CWinApp::m_nAutosaveInterval.
- AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES Диспетчер перезапуска открывает ранее открытые документы после перезапуска приложения из неожиданного выхода. Класс CDataRecoveryHandler обрабатывает хранение списка открытых документов и их восстановление.
- AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES Диспетчер перезапуска предложит пользователю восстановить автоматически сохраненные файлы после перезапуска приложения. Класс CDataRecoveryHandler запрашивает пользователя.
- AFX_RESTART_MANAGER_SUPPORT_NO_AUTOSAVE Объединение AFX_RESTART_MANAGER_SUPPORT_RESTART, AFX_RESTART_MANAGER_SUPPORT_RECOVER и AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES.
- AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS Объединение AFX_RESTART_MANAGER_SUPPORT_NO_AUTOSAVE, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART, AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL и AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES.
- AFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS Объединение AFX_RESTART_MANAGER_SUPPORT_RESTART, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES и AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES.
- AFX_RESTART_MANAGER_SUPPORT_RECOVERY_ASPECTS Объединение ofAFX_RESTART_MANAGER_SUPPORT_RECOVERY, AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES и AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES.

CWinApp::m_eHelpType

Тип этого элемента данных — это перечисленный тип AFX_HELP_TYPE, определенный CWinApp в классе.

AFX_HELP_TYPE m_eHelpType;

Замечания

Перечисление AFX_HELP_TYPE определяется следующим образом:

enum AFX_HELP_TYPE {
    afxWinHelp = 0,
    afxHTMLHelp = 1
    };
  • Чтобы задать справку HTML приложения, вызовите SetHelpMode и укажите afxHTMLHelp.

  • Чтобы задать справку приложения для WinHelp, вызовите SetHelpMode и укажите afxWinHelp.

CWinApp::m_hInstance

Соответствует параметру hInstance, переданного WindowsWinMain.

HINSTANCE m_hInstance;

Замечания

Элемент m_hInstance данных — это дескриптор текущего экземпляра приложения, работающего в Windows. Это возвращается глобальной функцией AfxGetInstanceHandle. m_hInstance — это общедоступная переменная типа HINSTANCE.

Пример

// Typically you do not need to pass the application's hInstance
// to Windows APIs directly because there are equivalent MFC
// member functions that pass the hInstance for you.  The following
// example is not typical:

HCURSOR hCursor;
hCursor = ::LoadCursor(AfxGetApp()->m_hInstance, 
   MAKEINTRESOURCE(IDC_MYCURSOR));

// A more direct way to get the application's hInstance is to
// call AfxGetInstanceHandle:
hCursor = ::LoadCursor(AfxGetInstanceHandle(), 
   MAKEINTRESOURCE(IDC_MYCURSOR));

// If you need the hInstance to load a resource, it is better
// to call AfxGetResourceHandle instead of AfxGetInstanceHandle:
hCursor = ::LoadCursor(AfxGetResourceHandle(), 
   MAKEINTRESOURCE(IDC_MYCURSOR));

// A better way to load the cursor resource is to call
// CWinApp::LoadCursor
hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);

CWinApp::m_lpCmdLine

Соответствует параметру lpCmdLine, переданного Windows WinMainв .

LPTSTR m_lpCmdLine;

Замечания

Указывает на строку, завершающую значение NULL, которая указывает командную строку для приложения. Используйте m_lpCmdLine для доступа к любым аргументам командной строки, введенным пользователем при запуске приложения. m_lpCmdLine — это общедоступная переменная типа LPTSTR.

Пример

if (m_lpCmdLine[0] == _T('\0'))
{
   // Create a new (empty) document.
   OnFileNew();
}
else
{
   // Open a file passed as the first command line parameter.
   OpenDocumentFile(m_lpCmdLine);
}

CWinApp::m_nAutosaveInterval

Длительность времени в миллисекундах между автосохранением.

int m_nAutosaveInterval;

Замечания

Диспетчер перезапуска можно настроить для автоматического хранения открытых документов с заданными интервалами. Если приложение не выполняет автоматическое сохранение файлов, этот параметр не действует.

CWinApp::m_nCmdShow

Соответствует параметру nCmdShow, переданного Windows WinMainв .

int m_nCmdShow;

Замечания

При вызове CWnd::ShowWindow для главного окна приложения следует передать m_nCmdShow в качестве аргумента. m_nCmdShow — общедоступная переменная типа int.

Пример

// The following code fragment is taken from CMyApp::InitInstance.
// CMyApp is derived from CWinApp.

// The main window has been initialized, so show and update it
// using the nCmdShow parameter passed to the application when it
// was first launched.
// pMainFrame is the main MDI frame window of our app and is derived
// from CMDIFrameWnd.
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();

CWinApp::m_pActiveWnd

Используйте этот элемент данных для хранения указателя на главное окно приложения контейнера OLE, которое имеет активированное приложение СЕРВЕРА OLE.

Замечания

Если этот элемент данных имеет значение NULL, приложение не активно.

Платформа задает эту переменную-член, когда окно фрейма активируется приложением контейнера OLE.

CWinApp::m_pDataRecoveryHandler

Указатель на обработчик восстановления данных для приложения.

CDataRecoveryHandler* m_pDataRecoveryHandler;

Замечания

Обработчик восстановления данных приложения отслеживает открытые документы и автоматически выполняет их сохранение. Платформа использует обработчик восстановления данных для восстановления автоматически сохраненных файлов при перезапуске приложения после неожиданного завершения работы. Дополнительные сведения см. в разделе CDataRecoveryHandler Class.

CWinApp::m_pszAppName

Указывает имя приложения.

LPCTSTR m_pszAppName;

Замечания

Имя приложения может поступать из параметра, переданного конструктору CWinApp , или, если оно не указано, в строку ресурса с идентификатором AFX_IDS_APP_TITLE. Если имя приложения не найдено в ресурсе, оно поступает из имени EXE-файла программы.

Возвращается глобальной функцией AfxGetAppName. m_pszAppName — общедоступная переменная типа const char*.

Примечание.

Если вы назначаете значение m_pszAppName, оно должно быть динамически выделено в куче. Деструктор вызывает бесплатные CWinAppвызовы () с этим указателем. Многие хотят использовать _tcsdupфункцию библиотеки времени выполнения () для выделения. Кроме того, освободите память, связанную с текущим указателем, перед назначением нового значения. Например:

//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszAppName);
//Change the name of the application file.
//The CWinApp destructor will free the memory.
m_pszAppName = _tcsdup(_T("c:\\somedir\\myapp.exe"));

Пример

CWnd *pWnd = AfxGetMainWnd();
// Set pWnd to some CWnd object whose window has already
// been created.

// The following call to CWnd::MessageBox uses the application
// title as the message box caption.
pWnd->MessageBox(_T("Some message"), AfxGetApp()->m_pszAppName);

// A more direct way to get the application title is to
// call AfxGetAppName:
pWnd->MessageBox(_T("Some message"), AfxGetAppName());

// An easier way to display a message box using the application
// title as the message box caption is to call AfxMessageBox:
AfxMessageBox(_T("Some message"));

CWinApp::m_pszExeName

Содержит имя исполняемого файла приложения без расширения.

LPCTSTR m_pszExeName;

Замечания

В отличие от m_pszAppName, это имя не может содержать пустые значения. m_pszExeName — общедоступная переменная типа const char*.

Примечание.

Если вы назначаете значение m_pszExeName, оно должно быть динамически выделено в куче. Деструктор вызывает бесплатные CWinAppвызовы () с этим указателем. Многие хотят использовать _tcsdupфункцию библиотеки времени выполнения () для выделения. Кроме того, освободите память, связанную с текущим указателем, перед назначением нового значения. Например:

//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszExeName);
//Change the name of the .EXE file.
//The CWinApp destructor will free the memory.
m_pszExeName = _tcsdup(_T("c:\\somedir\\myapp"));

CWinApp::m_pszHelpFilePath

Содержит путь к файлу справки приложения.

LPCTSTR m_pszHelpFilePath;

Замечания

По умолчанию платформа инициализирует m_pszHelpFilePath имя приложения с помощью ". Добавлено HLP. Чтобы изменить имя файла справки, установите m_pszHelpFilePath указатель на строку, содержащую полное имя нужного файла справки. Это удобно сделать в функции InitInstance приложения. m_pszHelpFilePath — общедоступная переменная типа const char*.

Примечание.

Если вы назначаете значение m_pszHelpFilePath, оно должно быть динамически выделено в куче. Деструктор вызывает бесплатные CWinAppвызовы () с этим указателем. Многие хотят использовать _tcsdupфункцию библиотеки времени выполнения () для выделения. Кроме того, освободите память, связанную с текущим указателем, перед назначением нового значения. Например:

//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszHelpFilePath);
//Change the name of the .HLP file.
//The CWinApp destructor will free the memory.
m_pszHelpFilePath = _tcsdup(_T("c:\\somedir\\myhelp.hlp"));

CWinApp::m_pszProfileName

Содержит имя приложения. INI-файл.

LPCTSTR m_pszProfileName;

Замечания

m_pszProfileName — общедоступная переменная типа const char*.

Примечание.

Если вы назначаете значение m_pszProfileName, оно должно быть динамически выделено в куче. Деструктор вызывает бесплатные CWinAppвызовы () с этим указателем. Многие хотят использовать _tcsdupфункцию библиотеки времени выполнения () для выделения. Кроме того, освободите память, связанную с текущим указателем, перед назначением нового значения. Например:

//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszProfileName);
//Change the name of the .INI file.
//The CWinApp destructor will free the memory.
m_pszProfileName = _tcsdup(_T("c:\\somedir\\myini.ini"));

CWinApp::m_pszRegistryKey

Используется для определения места хранения параметров профиля приложения в реестре или INI.

LPCTSTR m_pszRegistryKey;

Замечания

Как правило, этот член данных рассматривается как доступный только для чтения.

  • Значение сохраняется в разделе реестра. Имя параметра профиля приложения добавляется к следующему разделу реестра: HKEY_CURRENT_USER/Software/LocalAppWizard-Generated/.

Если вы назначаете значение m_pszRegistryKey, оно должно быть динамически выделено в куче. Деструктор вызывает бесплатные CWinAppвызовы () с этим указателем. Многие хотят использовать _tcsdupфункцию библиотеки времени выполнения () для выделения. Кроме того, освободите память, связанную с текущим указателем, перед назначением нового значения. Например:

//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszRegistryKey);
//Change the name of the registry key.
//The CWinApp destructor will free the memory.
m_pszRegistryKey = _tcsdup(
    _T("HKEY_CURRENT_USER\\Software\\mycompany\\myapp\\thissection\\thisvalue"));

CWinApp::m_pszAppID

Идентификатор пользовательской модели приложения.

LPCTSTR m_pszAppID;

Замечания

CWinApp::OnContextHelp

Обрабатывает справку SHIFT+F1 в приложении.

afx_msg void OnContextHelp();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию на ON_COMMAND( ID_CONTEXT_HELP, OnContextHelp )CWinApp карту сообщений класса, а также добавить запись таблицы акселератора, как правило, SHIFT+F1.

OnContextHelp помещает приложение в режим справки. Курсор изменяется на стрелку и вопросительный знак, а затем пользователь может переместить указатель мыши и нажать левую кнопку мыши, чтобы выбрать диалоговое окно, окно, меню или кнопку команды. Эта функция-член извлекает контекст справки объекта под курсором и вызывает функцию Windows WinHelp с этим контекстом справки.

CWinApp::OnDDECommand

Вызывается платформой, когда главное окно фрейма получает сообщение о выполнении DDE.

virtual BOOL OnDDECommand(LPTSTR lpszCommand);

Параметры

lpszCommand
Указывает на командную строку DDE, полученную приложением.

Возвращаемое значение

Ненулевое значение, если команда обрабатывается; в противном случае — 0.

Замечания

Реализация по умолчанию проверка указывает, является ли команда запросом на открытие документа и, если да, открывает указанный документ. Диспетчер файлов Windows обычно отправляет такие строки команд DDE, когда пользователь дважды щелкает файл данных. Переопределите эту функцию для обработки других команд DDE, например команды для печати.

Пример

BOOL CMyApp::OnDDECommand(LPTSTR lpszCommand)
{
   if (CWinApp::OnDDECommand(lpszCommand))
      return TRUE;

   // Handle any DDE commands recognized by your application
   // and return TRUE.  See implementation of CWinApp::OnDDEComand
   // for example of parsing the DDE command string.

   // Return FALSE for any DDE commands you do not handle.
   return FALSE;
}

CWinApp::OnFileNew

Реализует команду ID_FILE_NEW.

afx_msg void OnFileNew();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_FILE_NEW, OnFileNew )CWinApp карту сообщений класса. Если этот параметр включен, эта функция обрабатывает выполнение команды "Создать файл".

Сведения о поведении по умолчанию и руководстве по переопределении этой функции-члена см . в техническом примечание 22 .

Пример

// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

 

// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()

CWinApp::OnFileOpen

Реализует команду ID_FILE_OPEN.

afx_msg void OnFileOpen();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_FILE_OPEN, OnFileOpen )CWinApp карту сообщений класса. Если эта функция включена, эта функция обрабатывает выполнение команды "Открыть файл".

Сведения о поведении по умолчанию и рекомендациях по переопределении этой функции-члена см . в техническом примечание 22.

Пример

// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

 

// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()

CWinApp::OnFilePrintSetup

Реализует команду ID_FILE_PRINT_SETUP.

afx_msg void OnFilePrintSetup();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_FILE_PRINT_SETUP, OnFilePrintSetup )CWinApp карту сообщений класса. Если этот параметр включен, эта функция обрабатывает выполнение команды "Печать файла".

Сведения о поведении по умолчанию и рекомендациях по переопределении этой функции-члена см . в техническом примечание 22.

Пример

// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

 

// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()

CWinApp::OnHelp

Обрабатывает справку F1 в приложении (с использованием текущего контекста).

afx_msg void OnHelp();

Замечания

Обычно для ключа F1 также добавляется запись с клавишей акселератора. Включение ключа F1 — это только соглашение, а не требование.

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_HELP, OnHelp )CWinApp карту сообщений класса. Если этот параметр включен, вызывается платформой, когда пользователь нажимает клавишу F1.

Реализация этой функции обработчика сообщений по умолчанию определяет контекст справки, соответствующий текущему окну, диалоговому окну или элементу меню, а затем вызывает WINHELP.EXE. Если контекст в настоящее время недоступен, функция использует контекст по умолчанию.

Переопределите эту функцию-член, чтобы задать контекст справки другим элементам, кроме окна, диалогового окна, элемента меню или кнопки панели инструментов, которая в настоящее время имеет фокус. Вызов WinHelp с требуемым идентификатором контекста справки.

CWinApp::OnHelpFinder

Обрабатывает команды ID_HELP_FINDER и ID_DEFAULT_HELP.

afx_msg void OnHelpFinder();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_HELP_FINDER, OnHelpFinder )CWinApp карту сообщений класса. Если этот параметр включен, платформа вызывает эту функцию обработчика сообщений, когда пользователь приложения выбирает команду Help Finder для вызова WinHelp со стандартным HELP_FINDER разделом.

CWinApp::OnHelpIndex

Обрабатывает команду ID_HELP_INDEX и предоставляет раздел справки по умолчанию.

afx_msg void OnHelpIndex();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_HELP_INDEX, OnHelpIndex )CWinApp карту сообщений класса. Если этот параметр включен, платформа вызывает эту функцию обработчика сообщений, когда пользователь приложения выбирает команду "Индекс справки", чтобы вызвать WinHelp стандартную HELP_INDEX раздел.

CWinApp::OnHelpUsing

Обрабатывает команду ID_HELP_USING.

afx_msg void OnHelpUsing();

Замечания

Чтобы включить эту функцию-член, необходимо добавить инструкцию в ON_COMMAND( ID_HELP_USING, OnHelpUsing )CWinApp карту сообщений класса. Платформа вызывает эту функцию обработчика сообщений, когда пользователь приложения выбирает команду "Справка с помощью", чтобы вызвать WinHelp приложение с помощью стандартной HELP_HELPONHELP раздела.

CWinApp::OnIdle

Переопределите эту функцию-член для выполнения обработки бездействия.

virtual BOOL OnIdle(LONG lCount);

Параметры

lCount
Счетчик увеличивается каждый раз, OnIdle когда очередь сообщений приложения пуста. Это число сбрасывается до 0 при каждом обработке нового сообщения. Параметр lCount можно использовать для определения относительной продолжительности простоя приложения без обработки сообщения.

Возвращаемое значение

Ненулевое значение для получения больше времени простоя обработки; Значение 0, если больше времени простоя не требуется.

Замечания

OnIdle вызывается в цикле сообщений по умолчанию, когда очередь сообщений приложения пуста. Используйте переопределение для вызова собственных фоновых задач бездействия обработчика.

OnIdle должен возвращать значение 0, чтобы указать, что время простоя обработки не требуется. Параметр lCount увеличивается каждый раз OnIdle , когда очередь сообщений пуста и сбрасывается до 0 при каждом обработке нового сообщения. Вы можете вызывать различные подпрограммы простоя в зависимости от этого количества.

Ниже приведены сведения об обработке бездействующих циклов:

  1. Если цикл сообщений в библиотеке классов Microsoft Foundation проверка очереди сообщений и не находит ожидающих сообщений, он вызывает OnIdle объект приложения и предоставляет значение 0 в качестве аргумента lCount.

  2. OnIdle выполняет некоторую обработку и возвращает ненулевое значение, указывающее, что его следует вызывать повторно, чтобы выполнить дальнейшую обработку.

  3. Цикл сообщений снова проверка очереди сообщений. Если сообщения не ожидаются, он снова вызывается OnIdle , добавив аргумент lCount .

  4. В конечном итоге OnIdle завершает обработку всех задач бездействия и возвращает значение 0. Это сообщает циклу сообщений прекратить вызов OnIdle до тех пор, пока следующее сообщение не будет получено из очереди сообщений, в течение которого цикл простоя перезапускается с аргументом, равным 0.

Не выполняйте длительные задачи во время OnIdle , так как приложение не может обрабатывать входные данные пользователя, пока не OnIdle возвращается.

Примечание.

Реализация по умолчанию объектов пользовательского интерфейса команды обновления, таких OnIdle как элементы меню и кнопки панели инструментов, и выполняет очистку внутренней структуры данных. Поэтому при переопределении OnIdleнеобходимо вызвать CWinApp::OnIdle в lCount переопределенной версии. Сначала вызовите всю обработку бездействия базового класса (т. е. до тех пор, пока базовый класс OnIdle не возвращает значение 0). Если необходимо выполнить работу перед завершением обработки базового класса, просмотрите реализацию базового класса, чтобы выбрать соответствующий lCount , в течение которого выполняется ваша работа.

Если вы не хотите OnIdle вызываться всякий раз, когда сообщение извлекается из очереди сообщений, можно переопределить CWinThreadIsIdleMessage. Если приложение установило очень короткий таймер или если система отправляет сообщение WM_SYSTIMER, OnIdle то будет вызываться повторно и снизить производительность.

Пример

В следующих двух примерах показано, как использовать OnIdle. Первый пример обрабатывает две задачи простоя с помощью аргумента lCount , чтобы определить приоритеты задач. Первая задача является высокой приоритетом, и вы должны сделать это каждый раз, когда это возможно. Вторая задача менее важна и должна быть выполнена только при длительной приостановке ввода пользователем. Обратите внимание на вызов версии OnIdleбазового класса. Второй пример управляет группой неактивных задач с различными приоритетами.

BOOL CMyApp::OnIdle(LONG lCount)
{
   BOOL bMore = CWinApp::OnIdle(lCount);

   if (lCount == 0)
   {
      TRACE(_T("App idle for short period of time\n"));
      bMore = TRUE;
   }
   else if (lCount == 10)
   {
      TRACE(_T("App idle for longer amount of time\n"));
      bMore = TRUE;
   }
   else if (lCount == 100)
   {
      TRACE(_T("App idle for even longer amount of time\n"));
      bMore = TRUE;
   }
   else if (lCount == 1000)
   {
      TRACE(_T("App idle for quite a long period of time\n"));
      // bMore is not set to TRUE, no longer need idle
      // IMPORTANT: bMore is not set to FALSE since CWinApp::OnIdle may
      // have more idle tasks to complete.
   }

   return bMore;
   // return TRUE as long as there are any more idle tasks
}

CWinApp::OpenDocumentFile

Платформа вызывает этот метод, чтобы открыть именованный файл CDocument для приложения.

virtual CDocument* OpenDocumentFile(
    LPCTSTR lpszFileName
    BOOL bAddToMRU = TRUE);

Параметры

lpszFileName
[in] Имя открываемого файла.

bAddToMRU
[in] ЗНАЧЕНИЕ TRUE указывает, что документ является одним из самых последних файлов; FALSE указывает, что документ не является одним из самых последних файлов.

Возвращаемое значение

Указатель на успешное CDocument выполнение; в противном случае — ЗНАЧЕНИЕ NULL.

Замечания

Если документ с таким именем уже открыт, первое окно фрейма, содержащее документ, получит фокус. Если приложение поддерживает несколько шаблонов документов, платформа использует расширение имени файла для поиска соответствующего шаблона документа, чтобы попытаться загрузить документ. В случае успешного выполнения шаблон документа создает окно фрейма и представление для документа.

Пример

if (m_lpCmdLine[0] == _T('\0'))
{
   // Create a new (empty) document.
   OnFileNew();
}
else
{
   // Open a file passed as the first command line parameter.
   OpenDocumentFile(m_lpCmdLine);
}

CWinApp::P arseCommandLine

Вызовите эту функцию-член, чтобы проанализировать командную строку и отправить параметры по одному за раз в CCommandLineInfo::P arseParam.

void ParseCommandLine(CCommandLineInfo& rCmdInfo);

Параметры

rCmdInfo
Ссылка на объект CCommandLineInfo .

Замечания

При запуске нового проекта MFC с помощью мастера приложений мастер приложений создаст локальный экземпляр CCommandLineInfo, а затем вызовет ProcessShellCommand и ParseCommandLine в функции-члене InitInstance . Командная строка следует маршруту, описанному ниже:

  1. После создания InitInstanceCCommandLineInfo объекта передается ParseCommandLineв .

  2. ParseCommandLine затем многократно вызывается CCommandLineInfo::ParseParam один раз для каждого параметра.

  3. ParseParam заполняет CCommandLineInfo объект, который затем передается в ProcessShellCommand.

  4. ProcessShellCommand обрабатывает аргументы и флаги командной строки.

Обратите внимание, что при необходимости можно вызывать ParseCommandLine напрямую.

Описание флагов командной строки см. в разделе CCommandLineInfo::m_nShellCommand.

CWinApp::P reTranslateMessage

Переопределите эту функцию, чтобы отфильтровать сообщения окна перед отправкой в функции Windows TranslateMessage и DispatchMessage. Реализация по умолчанию выполняет преобразование клавиш акселератора, поэтому необходимо вызвать CWinApp::PreTranslateMessage функцию-член в переопределенной версии.

virtual BOOL PreTranslateMessage(MSG* pMsg);

Параметры

pMsg
Указатель на структуру MSG , содержащую сообщение для обработки.

Возвращаемое значение

Ненулевое значение, если сообщение было полностью обработано PreTranslateMessage и не должно обрабатываться дальше. Ноль, если сообщение должно обрабатываться обычным образом.

CWinApp::P rocessMessageFilter

Функция перехватчика платформы вызывает эту функцию-член для фильтрации и реагирования на определенные сообщения Windows.

virtual BOOL ProcessMessageFilter(
    int code,
    LPMSG lpMsg);

Параметры

code
Задает код перехватчика. Эта функция-член использует код для определения способа обработки lpMsg.

lpMsg
Указатель на усечение WINDOWS MSG.

Возвращаемое значение

Ненулевое значение, если сообщение обрабатывается; в противном случае — 0.

Замечания

Функция перехватчика обрабатывает события перед отправкой в обычную обработку сообщений приложения.

Если переопределить эту расширенную функцию, обязательно вызовите версию базового класса для поддержания обработки перехватчика платформы.

CWinApp::P rocessShellCommand

Эта функция-член вызывается InitInstance , чтобы принять параметры, передаваемые из объекта, определяемого CCommandLineInforCmdInfo, и выполнить указанное действие.

BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);

Параметры

rCmdInfo
Ссылка на объект CCommandLineInfo .

Возвращаемое значение

Ненулевое значение, если команда оболочки успешно обработана. Если значение равно 0, верните значение FALSE из InitInstance.

Замечания

При запуске нового проекта MFC с помощью мастера приложений мастер приложений создаст локальный экземплярCCommandLineInfo, а затем вызовет и parseCommandLine ProcessShellCommand в функции-членеInitInstance. Командная строка следует маршруту, описанному ниже:

  1. После создания InitInstanceCCommandLineInfo объекта передается ParseCommandLineв .

  2. ParseCommandLineзатем вызывает CCommandLineInfo::P arseParam повторно, один раз для каждого параметра.

  3. ParseParam заполняет CCommandLineInfo объект, который затем передается ProcessShellCommandв .

  4. ProcessShellCommand обрабатывает аргументы и флаги командной строки.

Элементы CCommandLineInfo данных объекта, определяемые CCommandLineInfo::m_nShellCommand, относятся к следующему перечислению типа, который определяется в CCommandLineInfo классе.

enum {
    FileNew,
    FileOpen,
    FilePrint,
    FilePrintTo,
    FileDDE
    };

Краткое описание каждого из этих значений см. в разделе CCommandLineInfo::m_nShellCommand.

CWinApp::P rocessWndProcException

Платформа вызывает эту функцию-член всякий раз, когда обработчик не перехватывает исключение, возникающее в одном из сообщений или обработчиков команд приложения.

virtual LRESULT ProcessWndProcException(
    CException* e,
    const MSG* pMsg);

Параметры

e
Указатель на неученное исключение.

pMsg
Усечение MSG, содержащее сведения о сообщении Windows, которое привело к возникновению исключения платформы.

Возвращаемое значение

Значение, которое должно быть возвращено в Windows. Обычно это 0L для сообщений Windows, 1L (TRUE) для командных сообщений.

Замечания

Не вызывайте эту функцию-член напрямую.

Реализация этой функции-члена по умолчанию создает окно сообщения. Если неученное исключение возникает в меню, панели инструментов или сбое команды акселератора, в поле сообщения отображается сообщение "Сбой команды"; в противном случае отображается сообщение "Внутренняя ошибка приложения".

Переопределите эту функцию-член, чтобы обеспечить глобальную обработку исключений. Вызовите только базовые функциональные возможности, если вы хотите отобразить окно сообщения.

CWinApp::Register

Выполняет все задачи регистрации, которые не обрабатываются RegisterShellFileTypes.

virtual BOOL Register();

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — значение 0.

Замечания

Реализация по умолчанию просто возвращает ЗНАЧЕНИЕ TRUE. Переопределите эту функцию, чтобы предоставить все настраиваемые шаги регистрации.

CWinApp::RegisterShellFileTypes

Вызовите эту функцию-член, чтобы зарегистрировать все типы документов приложения в диспетчере файлов Windows.

void RegisterShellFileTypes(BOOL bCompat = FALSE);

Параметры

bCompat
[in] TRUE добавляет записи регистрации для команд оболочки Print and Print To, позволяя пользователю печатать файлы непосредственно из оболочки или перетаскивая файл в объект принтера. Он также добавляет ключ DefaultIcon. По умолчанию этот параметр имеет значение FALSE для обратной совместимости.

Замечания

Это позволяет пользователю открывать файл данных, созданный приложением, дважды щелкнув его в диспетчере файлов. Вызовите после вызова RegisterShellFileTypesAddDocTemplate для каждого из шаблонов документов в приложении. При вызове также вызывается RegisterShellFileTypesфункция-член EnableShellOpen.

RegisterShellFileTypes Выполняет итерацию по списку объектов CDocTemplate , которые поддерживает приложение, и для каждого шаблона документа добавляет записи в базу данных регистрации, поддерживаемую Windows для сопоставлений файлов. Диспетчер файлов использует эти записи для открытия файла данных, когда пользователь дважды щелкает его. Это устраняет необходимость отправки. REG-файл с приложением.

Примечание.

RegisterShellFileTypes Работает только в том случае, если пользователь запускает программу с правами администратора. Если программа не имеет прав администратора, она не может изменить разделы реестра.

Если база данных регистрации уже связывает заданное расширение имени файла с другим типом файла, новая связь не создается. См. CDocTemplate класс для формата строк, необходимых для регистрации этих сведений.

CWinApp::RegisterWithRestartManager

Регистрирует приложение в диспетчере перезапуска.

virtual HRESULT RegisterWithRestartManager(
    BOOL bRegisterRecoveryCallback,
    const CString& strRestartIdentifier);

virtual HRESULT RegisterWithRestartManager(
    LPCWSTR pwzCommandLineArgs,
    DWORD dwRestartFlags,
    APPLICATION_RECOVERY_CALLBACK pRecoveryCallback,
    LPVOID lpvParam,
    DWORD dwPingInterval,
    DWORD dwCallbackFlags);

Параметры

bRegisterRecoveryCallback
[in] ЗНАЧЕНИЕ TRUE указывает, что этот экземпляр приложения использует функцию обратного вызова восстановления; FALSE указывает, что это не так. Платформа вызывает функцию обратного вызова восстановления при неожиданном выходе приложения. Дополнительные сведения см. в разделе CWinApp::ApplicationRecoveryCallback.

strRestartIdentifier
[in] Уникальная строка, определяющая этот экземпляр диспетчера перезапуска. Идентификатор диспетчера перезапуска является уникальным для каждого экземпляра приложения.

pwzCommandLineArgs
[in] Строка, содержащая дополнительные аргументы из командной строки.

dwRestartFlags
[in] Необязательные флаги для диспетчера перезапуска. Дополнительные сведения см. в разделе с примечаниями.

pRecoveryCallback
[in] Функция обратного вызова восстановления. Эта функция должна принимать параметр LPVOID в качестве входных данных и возвращать DWORD. Функция обратного вызова восстановления по умолчанию .CWinApp::ApplicationRecoveryCallback

lpvParam
[in] Входной параметр для функции обратного вызова восстановления. Дополнительные сведения см. в разделе CWinApp::ApplicationRecoveryCallback.

dwPingInterval
[in] Время, которое диспетчер перезапуска ожидает возврата функции обратного вызова восстановления. Этот параметр находится в миллисекундах.

dwCallbackFlags
[in] Флаги, переданные функции обратного вызова восстановления. Зарезервировано для последующего использования.

Возвращаемое значение

S_OK, если метод выполнен успешно; в противном случае код ошибки.

Замечания

Если приложение использует реализацию MFC по умолчанию для файлов автосохранения, следует использовать простую версию RegisterWithRestartManager. Используйте сложную версию, RegisterWithRestartManager если вы хотите настроить поведение автосохранения приложения.

При вызове этого метода с пустой строкой для strRestartIdentifier RegisterWithRestartManagerсоздается уникальная строка идентификатора для этого экземпляра диспетчера перезапуска.

Когда приложение неожиданно завершает работу, диспетчер перезапуска перезагружает приложение из командной строки и предоставляет уникальный идентификатор перезапуска в качестве необязательного аргумента. В этом сценарии платформа вызывает RegisterWithRestartManager два раза. Первый вызов происходит из CWinApp::InitInstance с пустой строкой для идентификатора строки. Затем метод CWinApp::P rocessShellCommand вызывается RegisterWithRestartManager с уникальным идентификатором перезапуска.

После регистрации приложения в диспетчере перезапуска диспетчер перезапуска диспетчер перезапуска отслеживает приложение. Если приложение неожиданно завершает работу, диспетчер перезапуска вызывает функцию обратного вызова восстановления во время завершения работы. Диспетчер перезапуска ожидает dwPingInterval для ответа от функции обратного вызова восстановления. Если функция обратного вызова восстановления не отвечает в течение этого времени, приложение завершает работу без выполнения функции обратного вызова восстановления.

По умолчанию dwRestartFlags не поддерживается, но предоставляется для дальнейшего использования. Возможные значения dwRestartFlags приведены следующим образом:

  • RESTART_NO_CRASH

  • RESTART_NO_HANG

  • RESTART_NO_PATCH

  • RESTART_NO_REBOOT

CWinApp::ReopenPreviousFilesAtRestart

Определяет, повторно ли диспетчер перезапуска открывает файлы, открытые при неожиданном завершении работы приложения.

virtual BOOL ReopenPreviousFilesAtRestart() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска повторно открывает ранее открытые файлы; FALSE указывает, что диспетчер перезапуска не выполняется.

CWinApp::RestartInstance

Обрабатывает перезапуск приложения, инициированный диспетчером перезапуска.

virtual BOOL CWinApp::RestartInstance();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если обработчик восстановления данных открывает ранее открытые документы; ЗНАЧЕНИЕ FALSE, если обработчик восстановления данных имеет ошибку или если ранее открытые документы отсутствуют.

Замечания

Когда диспетчер перезапуска перезагружает приложение, платформа вызывает этот метод. Этот метод извлекает обработчик восстановления данных и восстанавливает автоматически сохраненные файлы. Этот метод вызывает CDataRecoveryHandler::RestoreAutosavedDocuments , чтобы определить, хочет ли пользователь восстановить автоматически сохраненные файлы.

Этот метод возвращает значение FALSE, если CDataRecoveryHandler определяет, что открытых документов не было. Если открытых документов не было, приложение запускается обычно.

CWinApp::RestoreAutosavedFilesAtRestart

Определяет, восстанавливает ли диспетчер перезапуска автоматически сохраненные файлы при перезапуске приложения.

virtual BOOL RestoreAutosavedFilesAtRestart() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска восстанавливает автоматически сохраненные файлы; FALSE указывает, что диспетчер перезапуска не выполняется.

CWinApp::Run

Предоставляет цикл сообщений по умолчанию.

virtual int Run();

Возвращаемое значение

Значение int , возвращаемое WinMain.

Замечания

Run получает и отправляет сообщения Windows, пока приложение не получит WM_QUIT сообщение. Если очередь сообщений приложения в настоящее время не содержит сообщений, Run вызывает OnIdle для выполнения обработки времени простоя. Входящие сообщения переходят к функции-члену PreTranslateMessage для специальной обработки, а затем в функцию TranslateMessage Windows для стандартного перевода клавиатуры. Наконец, DispatchMessage вызывается функция Windows.

Run редко переопределяется, но его можно переопределить, чтобы обеспечить специальное поведение.

CWinApp::RunAutomated

Вызовите эту функцию, чтобы определить, присутствует ли параметр /Automation или -Automation, который указывает, был ли серверное приложение запущено клиентским приложением.

BOOL RunAutomated();

Возвращаемое значение

Ненулевое значение, если параметр найден; в противном случае — 0.

Замечания

При наличии параметр удаляется из командной строки. Дополнительные сведения о OLE Automation см. в статье "Серверы автоматизации автоматизации".

CWinApp::RunEmbedded

Вызовите эту функцию, чтобы определить, присутствует ли параметр /Embedding или -Embedding, который указывает, был ли серверное приложение запущено клиентским приложением.

BOOL RunEmbedded();

Возвращаемое значение

Ненулевое значение, если параметр найден; в противном случае — 0.

Замечания

При наличии параметр удаляется из командной строки. Дополнительные сведения о внедрении см. в статье "Серверы: реализация сервера".

CWinApp::SaveAllModified

Вызывается платформой для сохранения всех документов при закрытии главного окна фрейма приложения или через сообщение WM_QUERYENDSESSION.

virtual BOOL SaveAllModified();

Возвращаемое значение

Ненулевое значение, если оно безопасно для завершения приложения; 0, если не безопасно завершить приложение.

Замечания

Реализация этой функции-члена по умолчанию вызывает функцию члена CDocument::SaveModified в свою очередь для всех измененных документов в приложении.

CWinApp::SelectPrinter

Вызовите эту функцию-член, чтобы выбрать конкретный принтер и освободить принтер, который ранее был выбран в диалоговом окне печати.

void SelectPrinter(
    HANDLE hDevNames,
    HANDLE hDevMode,
    BOOL bFreeOld = TRUE);

Параметры

hDevNames
Дескриптор devNAMES, определяющий имена драйверов, устройств и выходных портов определенного принтера.

hDevMode
Дескриптор структуры DEVMODE , указывающий сведения о инициализации устройства и среде принтера.

bFreeOld
Освобождает ранее выбранный принтер.

Замечания

Если значения hDevMode и hDevName имеют значение NULL, SelectPrinter использует текущий принтер по умолчанию.

CWinApp::SetHelpMode

Задает тип справки приложения.

void SetHelpMode(AFX_HELP_TYPE eHelpType);

Параметры

eHelpType
Указывает тип справки для использования. Дополнительные сведения см. в разделе CWinApp::m_eHelpType .

Замечания

Задает тип справки приложения.

Чтобы задать тип справки приложения в ФОРМАТЕ HTMLHelp, можно вызвать EnableHTMLHelp. После вызова EnableHTMLHelpприложение должно использовать HTMLHelp в качестве приложения справки. Если вы хотите изменить использование WinHelp, можно вызвать SetHelpMode и задать для eHelpType значение afxWinHelp.

CWinApp::SetRegistryKey

Вызывает сохранение параметров приложения в реестре вместо файлов INI.

void SetRegistryKey(LPCTSTR lpszRegistryKey);
void SetRegistryKey(UINT nIDRegistryKey);

Параметры

lpszRegistryKey
Указатель на строку, содержащую имя ключа.

nIDRegistryKey
Идентификатор строкового ресурса, содержащего имя раздела реестра.

Замечания

Эта функция задает m_pszRegistryKey, которая затем используется функциями CWinAppGetProfileIntэлементов WriteProfileIntи WriteProfileString ,GetProfileString. Если эта функция была вызвана, список последних использованных файлов (MRU) также хранится в реестре. Раздел реестра обычно является именем компании. Он хранится в ключе следующей формы: HKEY_CURRENT_USER\Software\<company name\<application name>\<section name>\<value name>>.

CWinApp::SupportsApplicationRecovery

Определяет, восстанавливает ли диспетчер перезапуска приложение, которое неожиданно завершило работу.

virtual BOOL SupportsApplicationRecovery() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска восстанавливает приложение; FALSE указывает, что диспетчер перезапуска не выполняется.

CWinApp::SupportsAutosaveAtInterval

Определяет, автоматически ли диспетчер перезапуска автоматически открывает документы с регулярным интервалом.

virtual BOOL SupportsAutosaveAtInterval() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска автоматически проверит открытые документы; FALSE указывает, что диспетчер перезапуска не выполняется.

CWinApp::SupportsAutosaveAtRestart

Определяет, автоматически ли диспетчер перезапускает все открытые документы при перезапуске приложения.

virtual BOOL SupportsAutosaveAtRestart() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска автоматически открывает документы при перезапуске приложения; FALSE указывает, что диспетчер перезапуска не выполняется.

CWinApp::SupportsRestartManager

Определяет, поддерживает ли приложение диспетчер перезапуска.

virtual BOOL SupportsRestartManager() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что приложение поддерживает диспетчер перезапуска; FALSE указывает, что приложение не выполняется.

CWinApp::Unregister

Отменяет регистрацию всех файлов, зарегистрированных объектом приложения.

virtual BOOL Unregister();

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — значение 0.

Замечания

Функция Unregister отменяет регистрацию, выполняемую объектом приложения и функцией Register . Как правило, обе функции вызываются неявно MFC и поэтому не будут отображаться в коде.

Переопределите эту функцию для выполнения пользовательских действий отмены регистрации.

CWinApp::UnregisterShellFileTypes

Вызовите эту функцию-член, чтобы отменить регистрацию всех типов документов приложения с помощью диспетчера файлов Windows.

void UnregisterShellFileTypes();

CWinApp::WinHelp

Вызовите эту функцию-член, чтобы вызвать приложение WinHelp.

virtual void WinHelp(
    DWORD_PTR dwData,
    UINT nCmd = HELP_CONTEXT);

Параметры

dwData
Указывает дополнительные данные. Используемое значение зависит от значения параметра nCmd .

nCmd
Задает тип запрошенной справки. Список возможных значений и их влияние на параметр dwData см. в функции WinHelp Windows.

Замечания

Платформа также вызывает эту функцию для вызова приложения WinHelp.

Платформа автоматически закрывает приложение WinHelp при завершении работы приложения.

Пример

// Header File: HELPIDS.H
//
// This example header file is #include'd twice:
// (1) It is #include'd by the .CPP file that passes the DWORD
//     context i.d. to CWinApp::WinHelp.
// (2) It is #include'd in the [MAP] section of the .HPJ file,
//     to associate the help context string "HID_MYTOPIC" with
//     the help context numeric i.d., 101.
// The help context string "HID_MYTOPIC" is what identifies the
// help topic in the help .RTF source file, in the "#" footnote:
//     # HID_MYTOPIC
//
// Note, it is not necessary to manage help context id's this way
// for help topics associated with command id's and user interface
// id's defined in your RESOURCE.H file; you should use the MAKEHM
// tool via the custom build rule on your resource.h file to produce
// a help map (.HM) file for these id's.  It is necessary to manage
// help context id's as illustrated here only for help topics not
// associated with command id's or user interface id's.

#define HID_MYTOPIC 101

// Show the custom help topic that has the context string
// "HID_MYTOPIC" in the help .RTF file, and which is mapped
// to the DWORD i.d. HID_MYTOPIC in the above HELPIDS.H file.
AfxGetApp()->WinHelp(HID_MYTOPIC);

// The following is one line of code in the help map (.HM)
// file produced by the MAKEHM tool, which is called by the custom
// build rule on the resource.h file.  The MAKEHM tool reads the
// following #define in the application's RESOURCE.H file:
#define ID_MYCOMMAND 0x08004
// and adds a help id offset value of 0x10000 to create the
// help context DWORD value 0x18004:
// HID_MYCOMMAND                           0x18004
// See MFC Tech Note 28 for more information on help id offset values.

// Rarely will you need to directly call WinHelp yourself
// with the help context i.d. for a command or user interface
// object. The framework will call WinHelp automatically when
// the user, for example, hits F1 when the focus is on a
// My Command menu item. However, if you do want to directly
// call WinHelp for the help topic associated with the command,
// here is how you would do it:

AfxGetApp()->WinHelp(0x10000 + ID_MYCOMMAND);

CWinApp::WriteProfileBinary

Вызовите эту функцию-член для записи двоичных данных в указанный раздел реестра приложения или. INI-файл.

BOOL WriteProfileBinary(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    LPBYTE pData,
    UINT nBytes);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись. Если раздел не существует, он создается. Имя раздела является независимым от регистра; Строка может быть любой комбинацией прописных и строчных букв.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, в которую необходимо записать значение. Если запись не существует в указанном разделе, она создается.

Pdata
Указывает на данные для записи.

nBytes
Содержит число записываемых байтов.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Пример

В этом примере используется CWinApp* pApp = AfxGetApp(); для получения в классе CWinApp, который иллюстрирует способ WriteProfileBinaryGetProfileBinary использования из любой функции в приложении MFC.

CWinApp *pApp = AfxGetApp();

CString strSection = _T("My Section");
CString strItem = _T("My Binary Item");
double myData = 123.456e12;

pApp->WriteProfileBinary(strSection, strItem, (LPBYTE)&myData, sizeof(myData));
double *pData;
UINT n;
pApp->GetProfileBinary(strSection, strItem, (LPBYTE*)&pData, &n);
ASSERT(n == sizeof(myData));
ASSERT(myData = *pData);
delete[] pData; // free the buffer

Пример см. в примере CWinApp ::GetProfileBinary.

CWinApp::WriteProfileInt

Вызовите эту функцию-член, чтобы записать указанное значение в указанный раздел реестра приложения или. INI-файл.

BOOL WriteProfileInt(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    int nValue);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись. Если раздел не существует, он создается. Имя раздела является независимым от регистра; Строка может быть любой комбинацией прописных и строчных букв.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, в которую необходимо записать значение. Если запись не существует в указанном разделе, она создается.

nValue
Содержит значение для записи.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Пример

Этот пример используется CWinApp* pApp = AfxGetApp(); для получения в классе CWinApp, иллюстрируя способ, который WriteProfileStringWriteProfileInt, GetProfileStringи GetProfileInt может использоваться из любой функции в приложении MFC.

CWinApp *pApp = AfxGetApp();

CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");

pApp->WriteProfileString(strSection, strStringItem, _T("test"));

CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));

pApp->WriteProfileInt(strSection, strIntItem, 1234);

int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);

Другой пример см. в примере CWinApp ::GetProfileInt.

CWinApp::WriteProfileString

Вызовите эту функцию-член, чтобы записать указанную строку в указанный раздел реестра приложения или . INI-файл.

BOOL WriteProfileString(
    LPCTSTR lpszSection,
    LPCTSTR lpszEntry,
    LPCTSTR lpszValue);

Параметры

lpszSection
Указывает на строку, завершающую значение NULL, которая указывает раздел, содержащий запись. Если раздел не существует, он создается. Имя раздела является независимым от регистра; Строка может быть любой комбинацией прописных и строчных букв.

lpszEntry
Указывает на строку, завершающую значение NULL, содержащую запись, в которую необходимо записать значение. Если запись не существует в указанном разделе, она создается. Если этот параметр имеет значение NULL, удаляется раздел, указанный lpszSection .

lpszValue
Указывает на строку для записи. Если этот параметр имеет значение NULL, запись, указанная параметром lpszEntry , удаляется.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Пример

CWinApp *pApp = AfxGetApp();

CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");

pApp->WriteProfileString(strSection, strStringItem, _T("test"));

CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));

pApp->WriteProfileInt(strSection, strIntItem, 1234);

int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);

Другой пример см. в примере CWinApp ::GetProfileInt.

CWinApp::SetAppID

Явным образом задает идентификатор пользовательской модели приложения для приложения. Этот метод должен вызываться перед тем, как любой пользовательский интерфейс будет представлен пользователю (лучшее место — конструктор приложения).

void SetAppID(LPCTSTR lpcszAppID);

Параметры

lpcszAppID
Указывает идентификатор пользовательской модели приложения.

Замечания

См. также

Класс CWinThread
Диаграмма иерархии
Практическое руководство. Добавление поддержки диспетчера перезапуска