Using Contained Windows
Инструменты библиотеки ATL содержали окна с CContainedWindowT. Содержащийся окно представляет окно, в объект-контейнеру делегатов сообщения вместо обработки их в собственном классе.
Примечание
Нет необходимости создать класс, производный от CContainedWindowT для использования содержащихся windows.
С окнами, которые содержат может любой суперкласс существующие класс или подкласс Windows существующее окно. Создать поле, которое суперклассы существующий класс Windows, сначала определить существующее имя класса в конструкторе объекта CContainedWindowT. Затем вызовите CContainedWindowT::Create. В подклассу существующее окно не нужно указывать имя класса Windows ( NULL передайте конструктору). Просто вызовите метод CContainedWindowT::SubclassWindow с маркером в subclassed окно.
Обычно используется окна, содержащихся как элементы данных контейнера классифицируют. Контейнер не требуется окном; однако он должен быть производным от CMessageMap.
Содержащийся окно может использовать другие сопоставления сообщений для обработки сообщения. Если имеется более одного, содержащихся в окне, необходимо объявить несколько других сопоставлений сообщения, каждое соответствие в отдельный, содержащихся в окне.
Пример
Ниже приведен пример класса контейнера с 2, содержащиеся окнами:
class CMyContainer : public CMessageMap
{
public:
CContainedWindow m_wndEdit;
CContainedWindow m_wndList;
CMyContainer() : m_wndEdit(_T("Edit"), this, 1),
m_wndList(_T("List"), this, 2)
{
}
BEGIN_MSG_MAP(CMyContainer)
ALT_MSG_MAP(1)
// handlers for the Edit window go here
ALT_MSG_MAP(2)
// handlers for the List window go here
END_MSG_MAP()
};
Дополнительные сведения о содержащихся окнах см. в разделе пример SUBEDIT.