Поделиться через


AfxWinInit

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

BOOL AFXAPI AfxWinInit( 
   HINSTANCE hInstance, 
   HINSTANCE hPrevInstance, 
   LPTSTR lpCmdLine, 
   int nCmdShow  
);

Параметры

  • hInstance
    Дескриптор выполняющегося в данный момент модуля.

  • hPrevInstance
    Дескриптор к предыдущему экземпляру приложения. Для приложений на базе win32 этот параметр всегда NULL.

  • lpCmdLine
    Указывает на объединения завершенной строки, в командную строку для приложения.

  • nCmdShow
    Определяет, как будет показано главное окно приложения ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ.

Заметки

Для консольного приложения, которое не использует образце поставленную функции WinMain, необходимо вызвать AfxWinInit непосредственно для инициализации MFC.

При вызове самостоятельно AfxWinInit, необходимо объявить экземпляр класса CWinApp. Для консольного приложения то можно не для собственного класса из CWinApp и не вместо использования экземпляра CWinApp напрямую. Этот метод подходит, если решено оставить все функциональные возможности для приложения в пользовательскую реализацию main.

Примечание

При создании контекста активации для сборки, MFC использует ресурс манифеста предоставлен модулем пользователя.Контекст активации создается в AfxWinInit.Для получения дополнительной информации см. Поддержка контекстов активации в состоянии модуля MFC.

Пример

#include <afx.h>
#include <afxdb.h>

int _tmain(int /*argc*/, TCHAR* /*argv[]*/, TCHAR* /*envp[]*/)
{
   int nRetCode = 0;

   // initialize MFC and print and error on failure 
   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
      // TODO: change error code to suit your needs
      _tprintf(_T("Fatal Error: MFC initialization failed\n"));
      nRetCode = 1;
   }
   else
   {
      // try to connect to an ODBC database that doesn't exist 
      // (this wouldn't work at all without initializing MFC)

      CDatabase db;
      try
      {
         db.Open(_T("This Databsae Doesn't Exist"));

         // we shouldn't realistically get here

         _tprintf_s(_T("Successful!\n")
            _T("Closing ...\n"));
         db.Close();
         _tprintf_s(_T("Closed!"));
      }
      catch (CDBException* pEx)
      {
         // we got an exception! print an error message 
         // (this wouldn't work without initializing MFC)

         TCHAR sz[1024];

         _tprintf_s(_T("Error: "));
         if (pEx->GetErrorMessage(sz, 1024))
            _tprintf_s(sz);
         else
            _tprintf_s(_T("No error message was available"));
         _tprintf_s(_T("\n"));

         pEx->Delete();

         nRetCode = 1;
      }
   }

   return nRetCode;
}

Требования

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

См. также

Ссылки

Класс CWinApp

Функция main. Запуск программы

WinMain

Основные понятия

Макросы и глобальные объекты MFC

CWinApp: класс приложений