换句话说,来自一个空白的 win32 项目(没有向导)。
这是我所在的位置:
预处理器定义:WIN32
链接器->系统->子系统=控制台
int _tmain()
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
return nRetCode = 1;
}
MyWinApp* app = new MyWinApp();
app->InitApplication();
app->InitInstance();
app->Run();
AfxWinTerm();
return 0;
}
class MyWinApp: public CWinApp
{
public:
BOOL InitInstance();
int Run();
};
BOOL MyWinApp::InitInstance()
{
return TRUE;
}
int MyWinApp::Run()
{
return CWinThread::Run();
}
跳过 CWinApp::Run() 因为它寻找一个主窗口。
然而,在 CWinThread::Run() 中,ASSERT_VALID 失败。在 quickwatch 的顶部,它说 MyWinApp 无效。
我是否需要以其他方式创建 MyWinApp?
最佳答案
您可能失败了,因为您在调用 CWinApp
之后创建了 AfxWinInit
。在常规 MFC 应用程序中, CWinApp
是一个全局变量,它在 main
之前构造。这样,当 MFC 被初始化时,它就有了一个有效的全局 CWinApp
。尝试:
MyWinApp* app = new MyWinApp(); // ^moved up^
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
return nRetCode = 1;
}
关于c++ - 如何从头启动 MFC 应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7124307/