CWinApp::InitInstance
Windows では、同じプログラムの複製を複数同時に実行できます。
virtual BOOL InitInstance( );
戻り値
初期化が正常終了した場合は 0 以外の値を返します。それ以外の場合は 0 を返します。
解説
アプリケーションの初期化は、概念的には 2 つのセクションに分かれています。初めてプログラムを実行して各実行インスタンス初期化プログラムのコピーを時間行われる 1 回限りのアプリケーションの初期化の実行、最初の時間を含む。 この関数は、フレームワークが実装した WinMain から呼び出されます。
Windows で実行するアプリケーションの新しいインスタンスを初期化するには、InitInstance 関数をオーバーライドします。 通常は、メイン ウィンドウ オブジェクトを構築するために InitInstance をオーバーライドし、CWinThread::m_pMainWnd データ メンバーにそのウィンドウへのポインターを設定します。 このメンバー関数のオーバーライドの詳細についてを参照してくださいCWinApp:アプリケーション クラス。
注意
MFC アプリケーションは、シングル スレッド アパートメント (STA) として初期化される必要があります。 InitInstance のオーバーライドで CoInitializeEx を呼び出す場合、COINIT_MULTITHREADED ではなく COINIT_APARTMENTTHREADED を指定してください。 詳細は、「prb を参照してください。MFC アプリケーションがマルチ スレッド アパートメント (828643) でアプリケーションを初期化するときを応答を停止https://support.microsoft.com/default.aspx?scid=kb;en-us;828643。
使用例
// 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;
}
必要条件
**ヘッダー:**afxwin.h