C++ Mfc 初学者照着书上的代码打了,但是说m_pMainWnd为null,如图

hello.h

 class CMyApp : public CWinApp {
public:
    virtual BOOL InitInstance();
};

class MyMain : public CFrameWnd {
public:
    MyMain();
protected:
    afx_msg void OnPaint();
    DECLARE_MESSAGE_MAP();
};

Hello.cpp

 #include <afxwin.h>
#include "Hello.h"

CWinApp MyApp;
BOOL CMyApp::InitInstance() {
    m_pMainWnd = new MyMain;

    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

BEGIN_MESSAGE_MAP(MyMain, CFrameWnd)
    ON_WM_PAINT()
    END_MESSAGE_MAP()

MyMain::MyMain() {
    Create(0, TEXT("Hello"), WS_OVERLAPPEDWINDOW);
}

void MyMain::OnPaint() {
    CPaintDC dc(this);
    RECT rect;
    GetClientRect(&rect);
    dc.DrawText(TEXT("Hello,MFC"), &rect, 
        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}

下面是F5调试的报错信息:

“Hello.exe”(Win32): 已加载“C:\Users\USER\Documents\Visual Studio 2017\Projects\Hello\Debug\Hello.exe”。已加载符号。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\kernel32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已卸载“C:\Windows\syswow64\kernel32.dll”
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\kernel32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\KernelBase.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\user32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\win32u.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\mfc140ud.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\gdi32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\advapi32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\gdi32full.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\msvcrt.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\msvcp_win.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\sechost.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\ucrtbase.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\rpcrt4.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\oleaut32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\combase.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\rpcrt4.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已卸载“C:\Windows\syswow64\rpcrt4.dll”
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\sspicli.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\bcryptprimitives.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\cryptbase.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\vcruntime140d.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\ucrtbased.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\ole32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\shlwapi.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\imm32.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\uxtheme.dll”。无法查找或打开 PDB 文件。
“Hello.exe”(Win32): 已加载“C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.15063.413_none_55bc94a37c2a2854\comctl32.dll”。无法查找或打开 PDB 文件。
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\appcore.cpp(783) : AppMsg - Warning: m_pMainWnd is NULL in CWinApp::Run - quitting application.
“Hello.exe”(Win32): 已加载“C:\Windows\syswow64\kernel.appcore.dll”。无法查找或打开 PDB 文件。
线程 0xec 已退出,返回值为 0 (0x0)。
线程 0x3640 已退出,返回值为 0 (0x0)。
线程 0x3ad0 已退出,返回值为 0 (0x0)。
程序“[10088] Hello.exe”已退出,返回值为 0 (0x0)。

2个回答

Create在哪里定义的,你这个是什么书?《深入浅出MFC》么,这是mfc的仿真代码吧。

qq_36760828
qq_36760828 回复caozhy: 就是微软的mfc那本书,调了共享mfc。还是不显示窗口
接近 3 年之前 回复
qq_36760828
qq_36760828 回复caozhy: 嗯嗯。微软的那本mfc程序设计。Create应该没错吧。我打上去也有参数提示
接近 3 年之前 回复

清理解决方案,重新生成试试呢

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐