AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

窗口类的诞生(注册自己的窗口类)2

51自学网 2015-08-30 http://www.wanshiok.com

 

 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不保证资料的完整性。

上一篇:窗口类的诞生(注册自己的窗口类)1  下一篇:Gzip Zlib PNG 压缩算法,源码详解