CWindowImpl类

王朝system·作者佚名  2006-01-09
宽屏版  字体: |||超大  

这个类允许你创建一个新的窗口或使一个存在的窗口变成一个子类。CWindowImpl窗口程序使用消息映射来导向详细到响应的句柄。

template

< class T,

class TBase = CWindow,

class TWinTrait = CControlWinTraits >

class ATL_NO_VTABLE CWindowImpl :

public CWindowImplBaseT< TBase, TWinTraits >

参数:

T:你的类,继承自CWindowImpl

TBase:你类的基类,默认的类是CWindow

TWinTrait:一个定义你窗口风格的特性类。默认是CControlWinTraits.

备注:

Window CE支持一对新的窗口扩展风格,但其他的WINDOWS平台并不支持。同样Windows CE也不支持许多其他桌面平台上的窗口风格。这意味着你不能使用其他平台相同的标志类作为Create的参数dwStyle和dwExStyle的值。WindowCE也不支持标准的菜单条。

CWindowImpl::Create创建一个新的基于CWndClassInfo管理的窗口类消息的窗口。CWindowImpl包含

DECLARE_WND_CLASS宏,它意味着CWndClassInfo将注册一个新的窗口类。如果你想超类化一个存在的类,从CWindowImpl继承被包含DECLARE_WND_SUPERCLASS宏。这种情况下,CWndClassInfo将注册

一个基于存在的类的窗口类,但使用CWindowImpl::WindowProc作为处理函数。例如:

class CMyWindow : CComControl<CMyWindow>, ...

// CComControl derives from CWindowImpl

{

public:

// 1. The NULL parameter means ATL will generate a

// name for the superclass.

// 2. The "EDIT" parameter means the superclass is

// based on the standard Windows Edit box.

DECLARE_WND_SUPERCLASS(NULL, "EDIT")

...

};

因为CWndClassInfo 管理一个单个窗口类的信息,每个通过一个CWindowImpl实例创建的窗口都基于相同的窗口类。

CWindowImpl也支持窗口子类化。子类窗口方法附加一个存在的窗口到CWindowImpl对象并改变窗口处理程序为CWindowImpl::WvindowProc。每个CWindowImpl实例能够子类化一个不同的窗口。

对于任何给定的CWindowImpl对象,调用Create或SubclassWindow。你不应该同时调用这两个方法。

另外在CWindowImpl中,ATL提供CWindowImpl来创建一个包含其他对象的窗口。基类的析构函数确保window在对象被销毁之前无效。

CWindowImpl继承自CWindowImplBaseT,CWindowImplBaseT继承自CWindowImplRoot,CWindowImplRoot

继承字TBase和CMessageMap.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有