CWindowImpl选件类

此选件类用于创建或subclassing窗口的方法。

重要

此选件类及其成员不能在Windows运行时执行的应用程序。

template <
class T,
class TBase= CWindow,
class TWinTraits= CControlWinTraits 
>
class ATL_NO_VTABLE CWindowImpl :
public CWindowImplBaseT< TBase, TWinTraits>

参数

  • T
    您的选件类,从派生 CWindowImpl

  • TBase
    将新选件类基类。 默认基类是 CWindow

  • TWinTraits
    定义了窗口的样式的 特征选件类。 默认值为 CControlWinTraits

成员

h4616bh2.collapse_all(zh-cn,VS.110).gif公共方法

名称

描述

CWindowImpl::Create

创建一个窗口。

h4616bh2.collapse_all(zh-cn,VS.110).gifCWindowImplBaseT方法

DefWindowProc

提供默认处理消息。

GetCurrentMessage

返回当前消息。

GetWindowProc

返回当前窗口过程。

OnFinalMessage

调用接收最后一条消息后(通常 WM_NCDESTROY)。

SubclassWindow

子类窗口。

UnsubclassWindow

还原以前子类窗口。

h4616bh2.collapse_all(zh-cn,VS.110).gif静态方法

GetWndClassInfo

返回 CWndClassInfo静态实例,管理窗口选件类信息。

WindowProc

处理发送到窗口。

h4616bh2.collapse_all(zh-cn,VS.110).gif数据成员

m_pfnSuperWindowProc

指向窗口选件类的原始窗口过程。

备注

CWindowImpl 允许您创建新窗口或子类现有的窗口。 CWindowImpl的窗口过程使用消息映射处理消息的适当处理程序。

CWindowImpl::Create 创建基于windows选件类信息的一个新窗口管理的 CWndClassInfoCWindowImpl 包含 DECLARE_WND_CLASS 宏,这意味着 CWndClassInfo 将注册新的windows选件类。 如果要创建超类时现有窗口选件类,从 CWindowImpl 派生您的选件类并包含 DECLARE_WND_SUPERCLASS 宏。 在这种情况下,CWndClassInfo 将注册基于现有选件类的窗口选件类,但使用 CWindowImpl::WindowProc。 例如:

class ATL_NO_VTABLE CMyWindow :
   OtherInheritedClasses
   public 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, _T("EDIT"))

   // Remainder of class declaration omitted

备注

由于 CWndClassInfo 管理一个窗口选件类的信息,通过 CWindowImpl 创建实例的每个窗口都根据同一窗口选件类。

CWindowImpl 还支持subclassing的窗口。 SubclassWindow 方法附加现有的窗口。CWindowImpl 对象和更改windows程序。CWindowImpl::WindowProcCWindowImpl 每个实例可以子类访问其他窗口。

备注

对于任何给定 CWindowImpl 对象,请调用 CreateSubclassWindow。您不应调用在同一对象的两种方法。

除了 CWindowImpl外,ATL提供 CContainedWindow 创建在其他对象中包含的窗口。

基类析构函数(|)CWindowImplRoot确保窗口转到,在销毁之前对象。

CWindowImplCWindowImplBaseT派生,从 CWindowImplRoot派生,从 TBaseCMessageMap而后者派生。

有关以下内容的更多信息

请参见

创建控件

ATL教程

使用在ATL的窗口

ATL窗口选件类

ATL项目向导

创建 ATL 项目

窗口

有关Windows程序

继承层次结构

CMessageMap

TBase

CWindowImplRoot

CWindowImplBaseT

CWindowImpl

要求

Header: atlwin.h

请参见

参考

BEGIN_MSG_MAP

CComControl选件类

其他资源

ATL选件类概述