CDynamicChain选件类
此选件类提供支持动态绑定消息映射的方法。
重要
此选件类及其成员不能在Windows运行时执行的应用程序。
class CDynamicChain
成员
公共构造函数
名称 |
说明 |
---|---|
构造函数。 |
|
该析构函数。 |
公共方法
名称 |
说明 |
---|---|
处理一Windows消息传送到另一个对象的消息映射。 |
|
从集合中移除消息映射项。 |
|
添加消息映射项添加到集合或修改现有项。 |
备注
CDynamicChain 管理消息映射的集合,使Windows消息处理,在运行时,到另一个对象的消息映射。
若要添加对动态绑定消息映射,请执行以下操作:
从 CDynamicChain派生您的选件类。 在消息映射,请指定 CHAIN_MSG_MAP_DYNAMIC 宏绑定到另一个对象的默认消息映射。
派生要绑定到从 CMessageMap的每选件类。 CMessageMap 允许对象显示其消息映射在其他对象。
调用对象,并显示消息映射要绑定的 CDynamicChain::SetChainEntry 标识。
例如,假定您的选件类定义如下:
class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
public CDynamicChain
{
public:
CMyChainWnd() {}
BEGIN_MSG_MAP(CMyChainWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// dynamically chain to the default
// message map in another object
CHAIN_MSG_MAP_DYNAMIC(1313)
// '1313' identifies the object
// and the message map that will be
// chained to. '1313' is defined
// through the SetChainEntry method
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some painting code
return 0;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
客户端然后调用 CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
其中 chainedObj 所绑定到的对象是从 CMessageMap派生的选件类的实例。 现在,因此,如果 myCtl 接收不受 OnPaint 或 OnSetFocus处理的消息,窗口过程处理消息。chainedObj的默认消息映射。
有关绑定的消息映射的更多信息,请参见 消息映射 在该文章“ATL窗口选件类上”。
要求
Header: atlwin.h