CWinApp::InitInstance

更新 : 2007 年 11 月

Windows では、同じプログラムの複製を複数同時に実行できます。

virtual BOOL InitInstance( );

戻り値

初期化が正常終了した場合は 0 以外の値を返します。それ以外の場合は 0 を返します。

解説

アプリケーションの初期化は、概念的には 2 つのセクションに分割されます。1 つは、プログラムが最初に実行されるときに行われる 1 回だけの初期化であり、もう 1 つは、プログラムの複製が実行されるたび (初回も含む) に実行されるインスタンスの初期化です。この関数は、フレームワークが実装した WinMain から呼び出されます。

Windows で実行するアプリケーションの新しいインスタンスを初期化するには、InitInstance 関数をオーバーライドします。通常は、メイン ウィンドウ オブジェクトを構築するために InitInstance をオーバーライドし、CWinThread::m_pMainWnd データ メンバにそのウィンドウへのポインタを設定します。このメンバ関数のオーバーライドの詳細については、「CWinApp : アプリケーション クラス」を参照してください。

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

MFC アプリケーションは、シングル スレッド アパートメント (STA) として初期化される必要があります。InitInstance のオーバーライドで CoInitializeEx を呼び出す場合、COINIT_MULTITHREADED ではなく COINIT_APARTMENTTHREADED を指定してください。詳細については、https://support.microsoft.com/default.aspx?scid=kb;ja-jp;828643 の「PRB: MFC アプリケーションは、マルチスレッド区画としてアプリケーションを初期化するとき、応答を停止します。」 (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

参照

参照

CWinApp クラス

階層図

その他の技術情報

CWinApp のメンバ