CWinApp::InitInstance

Windows允许同一个程序的多个副本同时运行。

virtual BOOL InitInstance( );

返回值

非零,如果初始化成功;否则为0。

备注

应用程序初始化概念上分为两部分:第一次完成程序的一次性初始化应用程序运行和每次运行程序副本的实例初始化运行,第一个包含。 WinMain 结构的实现调用此函数。

重写 InitInstance 初始化运行在Windows下的应用程序的每个新实例。 通常,重写 InitInstance 编写您的主窗口对象和设置 CWinThread::m_pMainWnd 数据成员指向该窗口。 有关重写该成员函数的更多信息,请参见 CWinApp:应用程序选件类

备注

必须初始化MFC应用程序设置为单线程单元(STA)。如果对您的 InitInstance 重写的 CoInitializeEx,请指定 COINIT_APARTMENTTHREADED (而不是 COINIT_MULTITHREADED)。有关更多信息,请参见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;
}

要求

Header: afxwin.h

请参见

参考

CWinApp Class

层次结构图