CContainedWindowT选件类
此选件类实现在其他对象中包含的窗口。
重要
此选件类及其成员不能在Windows运行时执行的应用程序。
template <
class TBase= CWindow,
class TWinTraits= CControlWinTraits
>
class CContainedWindowT :
public TBase
参数
TBase
将新选件类基类。 默认基类是 CWindow。TWinTraits
特征的类定义了窗口的样式。 默认值为 CControlWinTraits。
备注
CContainedWindow 是 CContainedWindowT的专用化。如果要更改基类或特征,请直接使用 CContainedWindowT。
成员
公共构造函数
名称 |
说明 |
---|---|
构造函数。 初始化数据成员指定消息映射将处理包含窗口的消息。 |
公共方法
名称 |
说明 |
---|---|
创建一个窗口。 |
|
提供默认处理消息。 |
|
返回当前消息。 |
|
注册包含的窗口的窗口选件类。 |
|
子类窗口。 |
|
更改消息映射来处理包含窗口的消息。 |
|
还原以前子类窗口。 |
|
(静态)处理发送到包含窗口。 |
公共数据成员
名称 |
说明 |
---|---|
标识消息映射将处理包含窗口的消息。 |
|
指定新窗口选件类现有窗口选件类的名称。 |
|
指向窗口选件类的原始窗口过程。 |
|
指向包含的对象。 |
备注
CContainedWindowT 实现在其他对象中包含的窗口。 CContainedWindowT的窗口过程在对直接消息包含的对象使用消息映射到相应的处理程序。 当构造 CContainedWindowT 对象时,指定应使用哪消息映射。
CContainedWindowT 允许您通过创建超类现有窗口选件类创建一个新窗口。 Create 方法的第一个注册基于现有选件类,但在窗口选件类使用 CContainedWindowT::WindowProc。 Create 然后创建基于此新窗口选件类的窗口。 CContainedWindowT 每个实例可以创建超类时应用程序中采用不同的windows选件类。
CContainedWindowT 还支持subclassing的窗口。 SubclassWindow 方法附加现有的窗口。CContainedWindowT 对象和更改windows程序。CContainedWindowT::WindowProc。 CContainedWindowT 每个实例可以子类访问其他窗口。
备注
对于任何给定 CContainedWindowT 对象,请调用 Create 或 SubclassWindow。您不应调用在同一对象的两种方法。
当您在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项目向导 |
|
窗口 |
Windows 及随后的主题。Windows SDK |
继承层次结构
TBase
CContainedWindowT
要求
Header: atlwin.h