Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В некоторых приложениях, таких как приложение SDI или MDI, необходимо внедрить элемент управления в окно приложения. Функция создания члена класса-оболочки, вставленная Visual C++, может динамически создавать экземпляр элемента управления без необходимости в диалоговом окне.
Функция create member имеет следующие параметры:
lpszWindowName
Указатель на текст, отображаемый в свойстве Text или Caption элемента управления (если таковой имеется).
dwStyle
Стили Windows. Полный список см. в разделе CWnd::CreateControl.
прямоугольник
Указывает размер и положение элемента управления.
pParentWnd
Указывает родительское окно элемента управления, обычно это CDialog
. Он не должен иметь значение NULL.
nID
Указывает идентификатор элемента управления и может использоваться контейнером для ссылки на элемент управления.
Один из примеров использования этой функции для динамического создания элемента управления ActiveX может быть в представлении формы приложения SDI. Затем можно создать экземпляр элемента управления в WM_CREATE
обработчике приложения.
В этом примере CMyView
является основным классом представления, CCirc
является класс-оболочка и CIRC. H — это заголовок (. H) файл класса оболочки.
Реализация этой функции — это четырехэтапный процесс.
Динамическое создание элемента ActiveX в окне, которое не является диалоговым.
Вставьте 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 будет создаваться динамически при создании представления приложения.