CWinApp CFrameWindow未显示

时间:2017-03-29 08:49:00

标签: c++ visual-c++ mfc

我正在尝试使用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编译但没有帮助。

2 个答案:

答案 0 :(得分:2)

在InitInstance之后,你应该调用CWinApp :: Run来启动消息泵送。 此外,Run()会阻止WinMain函数,直到它退出。如果没有Run(),WinMain只会在看到窗口之前终止。

答案 1 :(得分:0)

因此,当我使用myApp.Run()或不使用myApp.Run()时,它会显示带有标题栏的空白白色窗口。

编辑:它在我的笔记本电脑win10上工作,但在电脑上win7相同的代码没有工作,所以在项目属性的电脑上 - &gt;字符集是Multibyte,在将其更改为Unicode后,它也开始在PC上显示窗口。