CFrameWnd的OnCreate函数怎么不自动调用啊?

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:17:53
程序代码如下:
#include <afxwin.h>
#include "resource.h"

class sample:public CFrameWnd
{
public:
sample()
{
}
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};

int sample::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

AfxMessageBox(_T("helloworld"));

return 0;
}

class App:public CWinApp
{
public:
BOOL InitInstance();
};

BOOL App::InitInstance()
{
sample *obj=new sample;
CString a="MFC Window";
obj->Create(NULL,a);

m_pMainWnd=obj;
obj->ShowWindow(SW_SHOWNORMAL);

return TRUE;
}

App a;

结果每次运行都在初试化sample类建立框架窗口时,都不会进入OnCreate函数,也不会执行AfxMessageBox(),就是啥也不干的出来一个窗口.
请问是怎么回事啊!

这是楼主自己写的吧,没有使用向导生成的吧,所以没有消息映射表,于是就不会调用OnCreate了。

需要在类声明中加入
DECLARE_MESSAGE_MAP()

在实现文件中加入
BEGIN_MSG_MAP(sample, CFrameWnd)
ON_WM_CREATE()
END_MSG_MAP()