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 の実装にアプリケーションのすべての機能を残しておく場合に使用します。
メモ : |
---|
アセンブリのアクティベーション コンテキストを作成すると、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