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


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

  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