CWindowImpl类

来源:互联网 发布:淘宝v4要花多少钱 编辑:程序博客网 时间:2024/05/02 11:12

这个类允许你创建一个新的窗口或使一个存在的窗口变成一个子类。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.

原创粉丝点击