Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer


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.

© 2015 Microsoft