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


Контейнеры элементов управления 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 в окне диалогового окна.

  1. Вставьте CIRC.H в CMYVIEW.H, непосредственно перед определением класса CMyView:

    #include "circ.h"
    
  2. Добавьте переменную-член типа ( CCirc) к защищенному раздел определения класса CMyView, расположенным в CMYVIEW.H:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. Добавьте обработчик сообщений WM_CREATE в класс CMyView.

  4. В функции обработчика, 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;
    }
    
  5. Постройте проект заново. Управление CIRC создается динамически при создании представления приложения.

См. также

Основные понятия

Контейнеры для элементов управления ActiveX