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.