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框架,才能正确地执行。