PreCreateWindow函数是CWnd类的一个虚拟函数,提供程序设置待创建窗口的属性(包括窗口类),这样继承于CWnd的类都可以按照自己的要求在PreCreateWindow中设置自己的属性了,而且我们看到MFC也是这样做的:
BOOL CWnd::PreCreateWindow(CREATESTRUCT &cs)
{
if(cs.lpszClass = = NULL) {
AfxDeferRegisterClass(AFX_WND_REG);
cs.lpszClass = _afxWnd;
}
return TRUE;
}
BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT &cs)
{
if(cs.lpszClass = = NULL)
{
AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG);
cs.lpszClass = _afxWndFrameOrView;
}
return TRUE;
}
BOOL CMDIFrameWnd::PreCreateWindow(CREATESTRUCT &cs)
{
if(cs.lpszClass = = NULL) {
AfxDeferRegisterClass(AFX_WNDMDIFRAME_REG);
cs.lpszClass = _afxWndMDIFrame;
}
}
BOOL CMDIChildWnd::PreCreateWindow(CREATESTRUCT &cs)
{
return CFrameWnd::PreCreateWindow(cs);
}
BOOL CView::PreCreateWindow(CREATESTRUCT &cs)
{
if(cs.lpszClass = = NULL)
{
AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG);
cs.lpszClass = _afxWndFrameOrView;
}
}
就是通过继承的方法,MFC实现常用类的窗口注册(代码并不完全,是从MFC中抽取对我们有意义的一部分代码)。
四.在MFC中注册自己的窗口类
在MFC中创建一个窗口,就必须是继承于CWnd类的,这样你的CMyWnd类自然就有了PreCreateWindow方法。你想注册有自己个性的窗口类,那么就在该函数中进行吧。也就是在PreCreateWindow函数中注册自己的窗口类,然后将窗口类的类名以及待创建窗口的其它属性(见CREATESTRUCT结构)填写cs,然后返回系统,供系统创建你的窗口。 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |