MFC的 PreCreateWindow的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:25:03
#include <afxwin.h>
class myapp : public CWinApp
{
public:
virtual BOOL InitInstance();

};
class myframe : public CFrameWnd
{
public:
myframe();
virtual BOOL PreCreateWindow(CREATESTRUCT &cs);
DECLARE_MESSAGE_MAP()
};
myapp my;
BOOL myapp::InitInstance()
{
m_pMainWnd= new myframe();
//m_pMainWnd->PreCreateWindow(CREATESTRUCT &cs);//这个是什么作用 咋用
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
return TRUE;
}

myframe::myframe()
{

Create(NULL,_T("my"));

}
BEGIN_MESSAGE_MAP(myframe,CFrameWnd)
END_MESSAGE_MAP()
为什么不能运行请改一下
这两个PreCreateWindow咋使用
候sir的书中不能理解
改一下我的代码
显示调用
“何处淬吴钩 ”你说的我知道

CMainFrame 换一下myframe

哎又让你捡了个便宜
没人回答只能把分

同LS所言,这个是窗口类的虚函数,你可以自己重写这个函数,来自定义一些窗口特性。
不是有个CREATESTRUCT&的引用嘛,这是MSDN里一个例子:
BOOL CMdiChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// Create a window without min/max buttons or sizable border
cs.style |= WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

// Size the window to 1/3 screen size and center it
cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3;
cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3;
cs.y = ((cs.cy * 3) - cs.cy) / 2;
cs.x = ((cs.cx * 3) - cs.cx) / 2;

return CMDIChildWnd::PreCreateWindow(cs);
}

CREATESTRUCT是一个结构,可以根据自己的需要修改这个结构的成员,以此改变新建的窗口的外观,具体参考:
http://msdn.microsoft.com/zh-cn/library/9930zz74(VS.80).aspx

PreCreateWindow是窗口类的虚函数,可以在自己的窗口类中重载此函数,用以改变窗口的样式,对mfc来说,这个函数是隐式调用的,不用自己显式调用。只要窗口被创建,则这个函数已经自动调用了,你只需要在需要的时候把这个函数重写一下就可以了

说别人不懂MFC,,你会还出来问,人家好心帮你回答,还这种腔调