Практикум прикладного программирования на MFC и C++ в среде VS.NET

Применение управляющих элементов ActiveX

Показывать лекцию целиком
Файлы к данной лабораторной работе, Вы можете скачать здесь.

Стандартные управляющие элементы находятся в панели инструментов Toolbox. Управляющий элемент характеризуется свойствами и событиями. Когда происходит событие, автоматически выполняется код обработчика, который мы связали с этим событием элемента управления.

Кроме стандартных элементов управления существует множество элементов управления, созданный независимыми производителями. Такие элементы называются ActiveX. Они хранятся в файлах, имеющих расширение OCX. Их можно включать в программу точно также, как это делается со стандартными компонентами панели Toolbox. Можно размещать управляющие элементы ActiveX в диалоговом окне, задавать их свойства и связывать код обработчиков с их событиями.

Управляющий элемент ActiveX похож на DLL и также как и она должен находится в одном из трех мест

  • В системном каталоге WINNT\System32 или WINDOWS\System32
  • В каталоге, прописанном в переменной окружения PATH
  • В текущем каталоге, где находится исполнимый файл приложения
  • Управляющий элемент ActiveX подобно DLL также компонуется с приложением динамически.

    Управляющие элементы ActiveX расширяют стандартные возможности среды программирования и позволяют создавать современные программы простыми средствами, используя уже наработанный и испытанный код.

    Цель настоящей лабораторной работы состоит в том, чтобы на примере управляющего элемента ActiveX познакомиться с технологией его включения в приложение. В качестве готового управляющего элемента ActiveX применим календарь. Он хранится в файле MSCAL.OCX и этот файл должен находиться на Вашем компьютере в одном из каталогов

  • C:\Office2000\ PFILES\MSOFFICE\OFFICE
  • C:\Program Files\Microsoft Office\Office
  • Для удобства он скопирован в каталог размещения данной лабораторной работы.

    Создание заготовки приложения

  • Войдите в свой каталог выполнения лабораторных работ
  • Запустите оболочку Microsoft Visual Studio .NET 2003
  • Создайте новый проект и назовите его
  • Настройте мастер
  • Установите в раскрывающемся списке Solution Configurations режим построения решения Release
  • Регистрация управляющего элемента календаря ActiveX

    Перед тем, как можно будет использовать управляющий элемент календаря ActiveX, его нужно зарегистрировать в Windows, чтобы сведения о нем были внесены в системный реестр. Это можно сделать с помощью утилиты, включенной в оболочку.

  • Выполните команду главного меню оболочки
  • Появится окно утилиты, в котором нужно выбрать команду File/Register Controls

    Откроется диалоговое окно Register Controls, в котором перечислены все управляющие элементы ActiveX, которые уже внесены в реестр операционной системы Windows.

    Мы видим, что управляющий элемент календаря ActiveX уже зарегистрирован в системе и делать ничего не нужно. Но если бы это было не так, то нужно было бы щелкнуть по кнопке Register..., в стандартном окне открытия файлов найти регистрируемый элемент управления ActiveX и щелкнуть по кнопке Open.

  • Щелкните по кнопке Close, затем закройте окно утилиты ActiveX Control Test Container
  • Визуальное проектирование программы MyCal

    Выполним визуальное проектирование диалогового окна, которое будет главным окном приложения.

  • В панели Resource View раскройте узел Dialog. Удерживая клавишу Shift или Ctrl, выделите оба ресурса и через панель Properties русифицируйте их одновременно
  • В панели Resource View выделите ресурс IDD_MYCAL_DIALOG и через контекстное меню выполните команду Open
  • В открывшемся окне дизайнера диалоговых окон отредактируйте главное диалоговое окно, удалив из него все кнопки и статический текст, сгенерированные по умолчанию
  • Поместить управляющий элемент - календарь на форму диалогового окна можно двумя способами

  • Предварительно связать его с панелью Toolbox оболочки. В этом случае элемент будет размещен постоянно в панели Toolbox
  • Одноразово связать его с формой проекта
  • При реализации первого способа...

  • Откройте вкладку Dialog Editor панели Toolbox и вызовите для нее контекстное меню. Выполните команду Add/Remove Items...

    Откроется диалоговое окно Customize Toolbox

  • Выберите вкладку COM Components и в списке всех зарегистрированных в системе компонентов ActiveX включите нужный компонент календаря. Нажмите кнопку OK и убедитесь, что этот компонент разместился в панели Toolbox. Теперь он будет присутствовать в оболочке постоянно для любого проекта, пока его вновь не удалить таким же способом
  • При реализации второго способа...

    Для одноразового размещения нужного компонента в диалоговой панели следует выполнить следующее:

  • Щелкните на открытом ресурсе диалогового окна правой кнопкой мыши и выполните команду
  • В появившемся диалоговом окне из списка зарегистрированных в системе элементов управления выберите нужный ActiveX

    и щелкните по кнопке OK.

  • В проектируемое диалоговое окно приложения будет помещен управляющий элемент календаря.

    После подключения к проекту ActiveX продолжим проектирование приложения.

  • Поместите на диалоговый ресурс две кнопки Button
  • Отредактируйте свойства управляющих элементов главного диалогового окна в соответствии с таблицей

    Свойства элементов управления диалогового окна
    Объект Свойство Значение
    Диалоговое окно ID IDD_MYCAL_DIALOG
    Caption Калькулятор
    Календарь ID IDC_CALENDAR
    BackColor ActiveCaptionText
    Кнопка левая ID IDC_TODAY_BUTTON
    Caption Today
    Кнопка правая ID IDC_EXIT_BUTTON
    Caption Exit
  • Добавление кода

    Мы хотим добавить два обработчика для кнопок и одну переменную-экземпляр класса календаря для управления им.

  • В панели
  • Через контекстное меню или главное меню оболочки Project вызовите мастер добавления переменной, который заполните так

    Мастер сгенерирует соответствующий код. Обратите внимание, что мы указали мастеру разместить код самого калькулятора в отдельных файлах Calendar.h и Calendar.cpp.

  • В файле MyCalDlg.cpp найдите функцию OnInitDialog() и разместите код установки календаря на текущую дату

    Код в функции CMyCalDlg::OnInitDialog()
    BOOL CMyCalDlg::OnInitDialog()
    {
    ................................................
      // TODO: Add extra initialization here
      // Установка календаря на текущую дату
      m_Calendar.Today();
      
      return TRUE;
  • Создайте обработчик кнопки Today и поместите туда такой же код
    Код обработчика кнопки Today
    void CMyCalDlg::OnBnClickedTodayButton()
    {
      // TODO: Add your control notification handler code here
      // Установка календаря на текущую дату
      m_Calendar.Today();
    }
  • Создайте обработчик кнопки Exit и поместите туда код завершения приложения
    Код обработчика кнопки Exit
    void CMyCalDlg::OnBnClickedExitButton()
    {
      // TODO: Add your control notification handler code here
      OnOK();
    }
  • Смените иконку приложения
  • Оформите диалоговое окно About
  • Постройте приложение и убедитесь в его работоспособности
  • Главное окно приложения должно иметь примерно такой вид

    Вернуться к учебному плану