This documentation is archived and is not being maintained.


Updated: July 2009

This method is called by the framework to initialize the application or DLL instance.

virtual BOOL InitInstance();

Nonzero if initialization is successful; otherwise 0.

For applications, this method is called from WinMain.

For DLLs, this method is called in response to the DLL_PROCESS_ATTACH event. For more information, see DllMain.

You can override InitInstance to customize initialization. For more information, see CWinApp: The Application Class.


MFC applications must be initialized as single threaded apartment (STA). If you call CoInitializeEx in your InitInstance override, specify COINIT_APARTMENTTHREADED (rather than COINIT_MULTITHREADED). For more information, see

// 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()
   // Remainder of function definition omitted.


   // 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(CChildFrame), // custom MDI child frame
   if (!pDocTemplate)
      return FALSE;

   // 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;

   // 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

   return TRUE;

Header: afxwin.h




July 2009

Added method description for DLLs; removed legacy 16-bit information.

Customer feedback.