我正在尝试使用CFrameWindow创建窗口,我使用了“使用Visual C ++进行应用图形理论的模拟”中的代码,但它没有入口点,所以它不起作用。所以我尽可能地简化了它,现在当在发布模式窗口中启动应用程序时没有出现,并且在调试模式下它会抛出断言失败的错误。我用过MSVS Visual C ++ - >一般 - >将“使用MFC”设置为在共享DLL中使用MFC的空项目。
以下是代码:
#include <afxwin.h>
class MyWnd : public CFrameWnd
{
public:
MyWnd() { Create(0, "MyWnd"); }
~MyWnd() { }
};
class MyApp : public CWinApp
{
public:
virtual BOOL InitInstance()
{
m_pMainWnd = new MyWnd;
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
};
int CALLBACK WinMain (_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
MyApp myApp;
myApp.InitInstance();
myApp.Run();
}
编辑:更新以调用MyApp.Run(),但它仍然没有显示任何内容,也检查了子系统,没有选中,尝试过控制台,Windows,Native,仅使用Windows编译但没有帮助。
答案 0 :(得分:2)
在InitInstance之后,你应该调用CWinApp :: Run来启动消息泵送。 此外,Run()会阻止WinMain函数,直到它退出。如果没有Run(),WinMain只会在看到窗口之前终止。
答案 1 :(得分:0)
因此,当我使用myApp.Run()或不使用myApp.Run()时,它会显示带有标题栏的空白白色窗口。
编辑:它在我的笔记本电脑win10上工作,但在电脑上win7相同的代码没有工作,所以在项目属性的电脑上 - &gt;字符集是Multibyte,在将其更改为Unicode后,它也开始在PC上显示窗口。