ATL реалізує міститься windows з CContainedWindow. У вікні міститься являє собою вікно, делегує своїх повідомлень контейнерного об'єкта, замість того, щоб впоратися з ними у свій власний клас.
Примітка Вам не потрібно отримати класу з CContainedWindow , щоб використовувати міститься windows.
З міститься windows ви можете у будь-якому суперкласу існуючого класу Windows або підкласу наявному вікні. Створити вікно що суперкласів існуючі Windows класу, спочатку вкажіть існуючі ім'я класу в конструкторі для CContainedWindow об'єкта. Потім зателефонуйте CContainedWindow::Create. До підкласу наявному вікні вам не потрібно вказати ім'я класу Windows (pass NULL , конструктор). Просто зателефонуйте CContainedWindow::SubclassWindow метод з ручкою вікно, будучи subclassed.
Як члени даних класу контейнерів зазвичай використовується міститься 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 зразка. Докладніше про superclassing і subclassing, перегляньте Вікно процедури Superclassing і Subclassing процедуру вікно в Win32 SDK.