Контейнеры элемент управления ActiveX: Использование элементов управления в контейнере не Диалогового Окна
В некоторых приложениях, например приложение SDI или MDI, необходимо внедрить элемент управления в окне приложения.Функция-член Создать класс-оболочки, вставленный Visual C++ может создать экземпляр элемента управления динамически, без необходимости использования диалогового окна.
Функция-член Создать имеет следующие параметры:
lpszWindowName
Указатель на текст, отображаемый в свойстве текста или заголовка элемента управления (если есть).dwStyle
Стили windows.Полный список см. в разделе CWnd::CreateControl.rect
Определяет размер и положение элемента управления.pParentWnd
Задает родительское окно элемента управления, обычно CDialog.Это не должно быть NULL.nID
Указывает идентификатор элемента управления и может использоваться контейнером для ссылки на элемент управления.
Примером использования этой функции для динамического создания элемента управления ActiveX находился бы в представлении формы приложений SDI.Затем можно создать экземпляр элемента управления в обработчике WM_CREATE приложения.
Для этого примера CMyView основной класс представления, CCirc класс-оболочка, и заголовок (CIRC.H. файл h) класс-оболочки.
Реализация этой функции процесс 4 шага.
Динамическое создание элемента управления ActiveX в окне non-диалогового окна
Вставьте CIRC.H в CMYVIEW.H, но перед определением класса CMyView:
#include "circ.h"
Добавьте переменную-член типа CCirc() к защищенному раздел определения класса CMyView, расположенного в CMYVIEW.H:
class CMyView : public CView { ... protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); };
Добавьте обработчик сообщений WM_CREATE к классу CMyView.
В функции обработчика, CMyView::OnCreate, осуществляет вызовы функции Create элемента управления с помощью указателя this как родительское окно.
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0); m_myCtl.SetCaption(_T("Control created")); return 0; }
Постройте проект заново.Управление Circ создается динамически при создании представления приложения.