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


Использование размещенных окон

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

Примечание.

Для использования содержащихся окон не требуется наследовать класс CContainedWindowT .

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

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

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

Пример

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

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 .

См. также

Классы окон