CWinApp CFrameWindow 未显示
Posted
技术标签:
【中文标题】CWinApp CFrameWindow 未显示【英文标题】:CWinApp CFrameWindow not shown 【发布时间】:2017-03-29 08:48:59 【问题描述】:我正在尝试使用 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 编译但没有帮助。
【问题讨论】:
您使用哪种子系统类型(请参阅 project-proerties -> 链接器 -> 系统 -> 子系统)。 子系统:没有选择,尝试了控制台、Windows、Native,仅使用 Windows 编译但没有帮助。 【参考方案1】:在 InitInstance 之后,您应该调用 CWinApp::Run 以启动消息泵送。 此外,Run() 会阻止 WinMain 函数,直到它退出。如果没有 Run(),您的 WinMain 只会在您看到窗口之前终止。
【讨论】:
现在我可以在任务管理器中看到它,但它没有显示任何内容。 根本没有窗框?没有关闭-最小化-最大化按钮?【参考方案2】:因此,当我使用 myApp.Run() 或不使用 myApp 使 myApp 成为全局时,它会显示带有标题栏的空白窗口。
编辑:它在我的笔记本电脑 win10 上工作,但在 pc win7 上相同的代码不起作用,所以在项目属性中的 pc 上 -> 字符集是多字节的,在将其更改为 Unicode 后,它也开始在 pc 上显示窗口。
【讨论】:
以上是关于CWinApp CFrameWindow 未显示的主要内容,如果未能解决你的问题,请参考以下文章