CContainedWindow

шаблон < классTBase= CWindow, классTWinTraits = CControlWinTraits >
класс CContainedWindowT: государственные TBase

Параметры

TBase

Базовый класс для нового класса. Базовый класс по умолчанию — CWindow.

TWinTraits

Черты класс, определяющий стили для вашего окна. Значение по умолчанию — CControlWinTraits.

Примечание   CContainedWindow это специализация CContainedWindowT. Если вы хотите изменить базовый класс или черты, непосредственно используйте CContainedWindowT.

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

CContainedWindow позволяет вам создать новое окно, суперкласс существующий класс окон. Метод Create сначала регистрирует класс окна, который основан на существующем классе, но использует CContainedWindow::WindowProc. Затем CREATE создает окно, на основе этого нового класса окна. Каждый экземпляр CContainedWindow можно суперклассов класса различные окна.

CContainedWindow также поддерживает окно подклассы. SubclassWindow метод придает существующему окну к CContainedWindow объекту и изменяет процедуру окна на CContainedWindow::WindowProc. Каждый экземпляр CContainedWindow можно подкласс другое окно.

Примечание   Для любого заданного объекта CContainedWindow вызовите Create или SubclassWindow. Вы не должны ссылаться оба метода на тот же объект.

При использовании параметра Добавить элемент управления, основанный на в мастере объектов ATL, мастер автоматически добавит элемент данных CContainedWindow к классу, реализующему элемент управления. Следующий пример взят из образец SUBEDIT и показано, как объявляется содержит окно

class CAtlEdit : ...
{
public:
   // Declare a contained window data member
   CContainedWindow m_EditCtrl;

   // Initialize the contained window:
   // 1. Pass "EDIT" to specify that the contained 
   //    window should be based on the standard 
   //    Windows Edit box
   // 2. Pass 'this' pointer to specify that CAtlEdit 
   //    contains the message map to be used for the 
   //    contained window's message processing
   // 3. Pass the identifier of the message map. '1'
   //    identifies the alternate message map declared
   //    with ALT_MSG_MAP(1)
   CAtlEdit() : m_EditCtrl(_T("EDIT"), this, 1)
   {
      m_bWindowOnly = TRUE;
   }

   // Declare the default message map, 
   // identified by '0'
   BEGIN_MSG_MAP(CAtlEdit)
      ...
      MESSAGE_HANDLER(WM_CREATE, OnCreate)
      ...
   // Declare an alternate message map,
   // identified by '1'
   ALT_MSG_MAP(1)
      MESSAGE_HANDLER(WM_CHAR, OnChar)
   END_MSG_MAP()

   // Define OnCreate handler
   // When the containing window receives a WM_CREATE
   // message, create the contained window by calling
   // CContainedWindow::Create
   LRESULT OnCreate(UINT uMsg, WPARAM wParam, 
                    LPARAM lParam, BOOL& bHandled)
   {
      ...
      m_EditCtrl.Create(m_hWnd, rc, _T("hello"), 
                        WS_CHILD | WS_VISIBLE | 
                        ES_MULTILINE | ES_AUTOVSCROLL);
      return 0;
   }

   ...
};
Для получения дополнительных сведений о См.
Создание элементов управления Учебник ATL
Использование windows в ATL Классы ATL окна
Мастер объектов ATL Создание проекта библиотеки ATL
Windows Окна и последующие темы в Platform SDK
Создание подклассов Подклассы процедура окна в Platform SDK
Суперкласс Суперкласс процедура окна в Platform SDK

# include lt;atlwin.h>

Члены класса

Родственные слова

CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP

Index