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(),就是啥也不干的出来一个窗口.
请问是怎么回事啊!
#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()