CContainedWindowT选件类

此选件类实现在其他对象中包含的窗口。

重要

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

template <
class TBase= CWindow,
class TWinTraits= CControlWinTraits 
>
class CContainedWindowT :
public TBase

参数

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

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

备注

CContainedWindowCContainedWindowT的专用化。如果要更改基类或特征,请直接使用 CContainedWindowT

成员

9e286yks.collapse_all(zh-cn,VS.110).gif公共构造函数

名称

说明

CContainedWindowT::CContainedWindowT

构造函数。 初始化数据成员指定消息映射将处理包含窗口的消息。

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

名称

说明

CContainedWindowT::Create

创建一个窗口。

CContainedWindowT::DefWindowProc

提供默认处理消息。

CContainedWindowT::GetCurrentMessage

返回当前消息。

CContainedWindowT::RegisterWndSuperclass

注册包含的窗口的窗口选件类。

CContainedWindowT::SubclassWindow

子类窗口。

CContainedWindowT::SwitchMessageMap

更改消息映射来处理包含窗口的消息。

CContainedWindowT::UnsubclassWindow

还原以前子类窗口。

CContainedWindowT::WindowProc

(静态)处理发送到包含窗口。

9e286yks.collapse_all(zh-cn,VS.110).gif公共数据成员

名称

说明

CContainedWindowT::m_dwMsgMapID

标识消息映射将处理包含窗口的消息。

CContainedWindowT::m_lpszClassName

指定新窗口选件类现有窗口选件类的名称。

CContainedWindowT::m_pfnSuperWindowProc

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

CContainedWindowT::m_pObject

指向包含的对象。

备注

CContainedWindowT 实现在其他对象中包含的窗口。 CContainedWindowT的窗口过程在对直接消息包含的对象使用消息映射到相应的处理程序。 当构造 CContainedWindowT 对象时,指定应使用哪消息映射。

CContainedWindowT 允许您通过创建超类现有窗口选件类创建一个新窗口。 Create 方法的第一个注册基于现有选件类,但在窗口选件类使用 CContainedWindowT::WindowProcCreate 然后创建基于此新窗口选件类的窗口。 CContainedWindowT 每个实例可以创建超类时应用程序中采用不同的windows选件类。

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

备注

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

当您在ATL项目向导使用 Add control based on 选项,向导会自动添加一个 CContainedWindowT 数据成员添加到实现控件的选件类。 下面的示例演示包含窗口如何声明:

public:
   // Declare a contained window data member
   CContainedWindow m_ctlEdit;

   // Initialize the contained window:
   // 1. Pass "Edit" to specify that the contained 
   //    window should be based on the standard 
   //    Windows Edit box
   // 2. Pass 'this' pointer to specify that CAtlEdit 
   //    contains the message map to be used for the 
   //    contained window's message processing
   // 3. Pass the identifier of the message map. '1'
   //    identifies the alternate message map declared
   //    with ALT_MSG_MAP(1)
   CAtlEdit()
      : m_ctlEdit(_T("Edit"), this, 1)
   {
      m_bWindowOnly = TRUE;
   }
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
   CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// Declare an alternate message map, identified by '1'
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
// Define OnCreate handler
// When the containing window receives a WM_CREATE
// message, create the contained window by calling
// CContainedWindow::Create
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
   BOOL& /*bHandled*/)
{
   RECT rc;
   GetWindowRect(&rc);
   rc.right -= rc.left;
   rc.bottom -= rc.top;
   rc.top = rc.left = 0;
   m_ctlEdit.Create(m_hWnd, rc, _T("hello"), WS_CHILD | WS_VISIBLE | 
      ES_MULTILINE | ES_AUTOVSCROLL);
   return 0;
}

有关以下内容的更多信息

请参见

创建控件

ATL教程

使用在ATL的窗口

ATL窗口选件类

ATL项目向导

创建 ATL 项目

窗口

Windows 及随后的主题。Windows SDK

继承层次结构

TBase

CContainedWindowT

要求

Header: atlwin.h

请参见

参考

CWindow选件类

CWindowImpl选件类

CMessageMap选件类

BEGIN_MSG_MAP

ALT_MSG_MAP

其他资源

ATL选件类概述