Поделиться через


CDynamicChain Class

Этот класс предоставляет методы, поддерживающие динамическое связывание сопоставления сообщения.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в этой среде выполнения Windows.

class CDynamicChain

Члены

Открытые конструкторы

Имя

Описание

CDynamicChain::CDynamicChain

Конструктор.

CDynamicChain::~CDynamicChain

Деструктор.

Открытые методы

Имя

Описание

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 Class

Другие ресурсы

ATL Class Overview