The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.
CHAIN_MSG_MAP_MEMBER
Defines an entry in a message map.
CHAIN_MSG_MAP_MEMBER( theChainMember )
- theChainMember
[in] The name of the data member containing the message map.
CHAIN_MSG_MAP_MEMBER directs messages to a data member's default message map (declared with BEGIN_MSG_MAP). To direct messages to a data member's alternate message map (declared with ALT_MSG_MAP), use CHAIN_MSG_MAP_ALT_MEMBER.
Note |
|---|
Always begin a message map with BEGIN_MSG_MAP. You can then declare subsequent alternate message maps with ALT_MSG_MAP. The END_MSG_MAP macro marks the end of the message map. Every message map must have exactly one instance of BEGIN_MSG_MAP and END_MSG_MAP. |
For more information about using message maps in ATL, see Message Maps.
Example
class CMyContainerClass : public CWindowImpl<CMyContainerClass> { public: CMyContainedClass m_obj; BEGIN_MSG_MAP(CMyContainerClass) MESSAGE_HANDLER(WM_PAINT, OnPaint) // chain to default message map of m_obj CHAIN_MSG_MAP_MEMBER(m_obj) ALT_MSG_MAP(1) // chain to default message map of m_obj CHAIN_MSG_MAP_MEMBER(m_obj) ALT_MSG_MAP(2) MESSAGE_HANDLER(WM_CHAR, OnChar) // chain to alternate message map of m_obj CHAIN_MSG_MAP_ALT_MEMBER(m_obj, 1) END_MSG_MAP() LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { return 0; } LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { return 0; } };
Requirements
Header: atlwin.h
Show:

This example illustrates the following:
If a window procedure is using CMyClass's default message map and OnPaint does not handle a message, the message is directed to m_obj's default message map for processing.
If a window procedure is using the first alternate message map in CMyClass, all messages are directed to m_obj's default message map.
If a window procedure is using CMyClass's second alternate message map and OnChar does not handle a message, the message is directed to the specified alternate message map of m_obj. Class CMyContainedClass must have declared this message map with ALT_MSG_MAP(1).