次の方法で共有


AfxWinInit

更新 : 2007 年 11 月

この関数は、MFC の WinMain 関数で呼び出されます。これは、GUI ベースのアプリケーションの CWinApp の初期化として呼び出され、MFC を初期化します。

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

パラメータ

  • hInstance
    現在実行中のモジュールのハンドル。

  • hPrevInstance
    アプリケーションの前のインスタンスのハンドル。Win32 ベースのアプリケーションでは、このパラメータは必ず NULL になります。

  • lpCmdLine
    NULL で終わる文字列へのポインタ。この文字列は、アプリケーションのコマンド ラインを指定します。

  • nCmdShow
    GUI アプリケーションのメイン ウィンドウの表示方法を指定します。

解説

コンソール アプリケーションでは、MFC の WinMain 関数を使用しないので、AfxWinInit を直接呼び出して MFC を初期化する必要があります。

AfxWinInit をプログラマが呼び出した場合は、CWinApp クラスのインスタンスを宣言してください。また、コンソール アプリケーションに対しては、CWinApp からプログラマ作成のクラスを派生せずに、CWinApp のインスタンスを直接使用してください。この方法は、main の実装にアプリケーションのすべての機能を残しておく場合に使用します。

w04bs753.alert_note(ja-jp,VS.90).gifメモ :

アセンブリのアクティベーション コンテキストを作成すると、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

参照

概念

MFC マクロとグローバル

CWinApp : アプリケーション クラス

参照

CWinApp クラス

main: Program Startup

WinMain