CDynamicChain选件类

此选件类提供支持动态绑定消息映射的方法。

重要

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

class CDynamicChain

成员

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

名称

说明

CDynamicChain::CDynamicChain

构造函数。

CDynamicChain::~CDynamicChain

该析构函数。

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

名称

说明

CDynamicChain::CallChain

处理一Windows消息传送到另一个对象的消息映射。

CDynamicChain::RemoveChainEntry

从集合中移除消息映射项。

CDynamicChain::SetChainEntry

添加消息映射项添加到集合或修改现有项。

备注

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

请参见

参考

CWindowImpl选件类

其他资源

ATL选件类概述