WINX 中的窗口类层次

WINX 中的窗口类层次

 

要想使用winx进行Windows编程,了解一下winx的窗口类层次是非常必要的。Winx中的窗口类层次很简单,如下图所示:

 

 

从上图我们可以看出,winx中窗口类的类层次非常直观,WindowMessage是所有窗口类的基类,负责消息处理以及提供缺省的消息处理机制。从此类派生了两个类:DialogBaseWindow。顾名思义,DialogBase类用于对话框处理,Window类用于窗口处理。ModalDialogModalessDialog派生自DialogBase,分别对应于模式对话框和无模式对话框。MainFrameMDIMainFrameMDIChildFrame派生自Window,其中MainFrame用于普通的窗口应用程序;MDIMainFrameMDIChildFrame这两个类用于MDI应用程序(目前,在winx中还没有实现这个功能,winx的后续版本中会实现它)。

 

实际使用中,你只要从ModalDialogModalessDialogMainFrame派生自己的类即可(MDI可用后,也可以从MDIMainFrameMDIChildFrame派生),如下面的例子:

class CHelloMainFrame : public winx::MainFrame<CHelloMainFrame>

{

      // 你的代码

      ……

}

具体的实现细节可以参照Winx教程

 

在自定义控件时,可以从Window类直接派生。关于这方面的例子也可以参照Winx教程

 

上面的类层次图中,在虚线方框中的参数表示的是模板参数,例如WindowMessage的原型如下:

template <class WindowClass>

class WindowMessage

{

}

另外,DialogBaseWindow类名的右上角有一个名字HandleClass,这表示HandleClass也是DialogBaseWindow类的基类。这里HandleClass也作为模板参数传进来,它的功能主要是封装一个窗口的基本操作(如设置窗口标题、维护窗口句柄等)。HandleClass有一个缺省值,大多数情况下你不需要指定它,请看Window类的原型:

template <class WindowClass, int nDlgId = 0, class HandleClass = DefaultWindowHandle>

class ModalDialog : public DialogBase<WindowClass, nDlgId, HandleClass>

{

}

DefaultWindowHandle的定义如下:

typedef HandleT<::ATL::CWindow> DefaultWindowHandle;

这段定义说明HandleClass的实际类型是ATL中的CWindow类。关于CWindow类可以查看MSDN的帮助。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值