Использование замкнутых Windows

ATL реализует содержится windows с CContainedWindow. Содержит окно представляет собой окно, которая делегирует свои сообщения для объекта контейнера, вместо обработки их в своем собственном классе.

Примечание   Вам не нужно произвести класс от CContainedWindow , чтобы использовать содержащуюся windows.

С содержится windows вы можете либо суперкласса существующего Windows класса или подкласса существующему окну. Для создания окна, что суперклассов существующих окон класса, сначала указывается имя существующего класса в конструктор для объекта CContainedWindow . Затем вызовите CContainedWindow::Create. Подкласс существующему окну вам не нужно указывать имя класса Windows (проход NULL в конструктор). Просто вызовите метод CContainedWindow::SubclassWindow с дескриптором окна созданном как подкласс.

Содержит windows обычно используется как члены данных класса контейнера. Контейнер не нужно быть окна; Однако он должен быть производным от CMessageMap.

Содержит окно можно использовать схемы альтернативные сообщений для обработки своих сообщений. Если у вас более одного замкнутых окна, вам следует объявить некоторые альтернативные схемы сообщений, каждый из которых соответствует отдельное окно содержит.

Ниже приведен пример класса контейнера с двумя содержится windows:

класс CMyContainer: общественного CMessageMap,...
{
общественности:
 nbsp; CContainedWindow m_wndEdit;
   CContainedWindow m_wndList;

CMyContainer(): m_wndEdit ("Правка", это, 1), m_wndList («Список», это, 2).
   {
   }

...

BEGI&N_MSG_MAP(CMyContainer)
   ALT_MSG_MAP(1)
      / / обработчики для окна редактирования перейдите сюда
   ALT_MSG_MAP(2)
      / / обработчики для окна список перейдите сюда
   END_MSG_MAP()

}

Для получения дополнительных сведений о замкнутых windows, см. образец SUBEDIT . Для получения дополнительных сведений о суперкласс и подклассы, см. Суперкласс процедура окна и Подклассы процедура окна в Win32 SDK.

Index