换句话说,来自一个空白的 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 失败。在快速观察的顶部,它显示 MyWinApp 无效。
我需要以其他方式创建 MyWinApp 吗?
你可能会失败,因为你正在创建CWinApp
after你打电话来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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)