MFC应用项目模板是Visual Studio提供的一种便捷的创建MFC应用程序的方法。当我们在选择MFC应用项目模板,创建一个项目后,会发现程序虽然可以编译成功,但是不能直接执行,而是需要在调试模式下运行。这是因为MFC应用程序是一个动态链接库(DLL),而不是一个可执行程序(EXE)。

在MFC应用项目模板中,会默认生成App类,该类派生自CWinApp类并包含许多虚函数,其中最重要的是InitInstance()函数,这个函数是在程序执行时调用的,它初始化程序的主窗口和其他的应用程序资源。在这个函数中,我们需要创建一个CFrameWnd派生类的对象,将其显示在屏幕上。示例代码如下:

BOOL CMyApp::InitInstance()
{
   // 创建主窗口对象
   CMainFrame* pMainFrame = new CMainFrame;
   if (!pMainFrame)
      return FALSE;

   // 设置主窗口的各种属性
   pMainFrame->LoadFrame(IDR_MAINFRAME,
      WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
      NULL);

   // 显示主窗口
   m_pMainWnd = pMainFrame;
   pMainFrame->ShowWindow(SW_SHOW);
   pMainFrame->UpdateWindow();

   return TRUE;
}

另外,我们还需要在应用程序的入口处(一般是WinMain函数)调用AfxWinInit()函数来初始化MFC框架,并创建CMyApp类的对象。示例代码如下:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPSTR lpCmdLine, int nCmdShow)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // 初始化MFC框架
   if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
   {
      // 初始化失败
      return 1;
   }

   // 创建应用程序对象
   CMyApp theApp;

   // 运行消息循环
   return theApp.Run();
}

总之,通过MFC应用项目模板建立的应用程序需要设置主窗口等资源,并调用AfxWinInit()函数初始化MFC框架,才能正确地执行。