Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 999 / 59 | Оценка: 4.11 / 3.89 | Длительность: 29:38:00
Самостоятельная работа 18:

Создание собственного элемента управления ActiveX

Включение свойств в элемент управления MyClock

Включение базовых свойств в элемент управления MyClock

Любой элемент управления имеет некоторый неизменный ограниченный набор свойств, которые определяют его основные характеристики. Этот набор называется базовым. Базовые свойства любого элемента управления ActiveX приведены в таблице

Базовые свойства элементов управления
Свойство Значение
Apperance Внешний вид (например, 3-мерный или плоский)
BackColor Цвет фона
BorderStyle Стиль рамки
Caption Заголовок
Enabled Состояние доступности
Font Шрифт для выводимого текста
ForeColor Цвет переднего плана
hWnd Маркер окна
ReadyState Состояние готовности
Text Текст

Для практики включим два базовых свойства в наш элемент управления: BackColor и ForeColor.

  • Откройте панель Class View и раскройте узел MyClockLib

  • Через контекстное меню элемента _DMyClock выполните команду Add/Add Property...

  • В появившемся диалоговом окне Add Property Wizard включите радиокнопку Stock (Готовое, Базовое)
  • В раскрывающемся списке выберите свойство BackColor и нажмите кнопку Finish

  • Повторите те же действия для добавления в элемент управления свойства ForeColor
  • Убедитесь, что в панели Class View элемент _DMyClock получил два новых свойства

  • Убедитесь, что файл MyClock.idl получил две новых строки кода
    Новые строки кода в файле MyClock.idl
    // MyClock.idl : type library source for ActiveX Control project.
      
    // This file will be processed by the MIDL compiler tool to
    // produce the type library (MyClock.tlb) that will become a resource in
    // MyClock.ocx.
      
    #include 
    #include 
      
    [ uuid(30BE1A13-3CBE-4525-A8B6-D126D4CFD220), version(1.0),
      helpfile("MyClock.hlp"),
      helpstring("MyClock ActiveX Control module"),
      control ]
    library MyClockLib
    {
      importlib(STDOLE_TLB);
      
      //  Primary dispatch interface for CMyClockCtrl
      
      [ uuid(15870940-495C-4FFD-8C1A-32B6C2C87C25),
        helpstring("Dispatch interface for MyClock Control")]
      dispinterface _DMyClock
      {
        properties:
        [id(DISPID_BACKCOLOR), helpstring("property BackColor")] OLE_COLOR BackColor;
        [id(DISPID_FORECOLOR), helpstring("property ForeColor")] OLE_COLOR ForeColor;
    methods:
      
          [id(DISPID_ABOUTBOX)] void AboutBox();
      };
      
      //  Event dispatch interface for CMyClockCtrl
      
      [ uuid(1E47AE17-F799-44FC-9C13-9E3DD23D5540),
        helpstring("Event interface for MyClock Control") ]
      dispinterface _DMyClockEvents
      {
        properties:
          //  Event interface has no properties
      
        methods:
      };
      
      //  Class information for CMyClockCtrl
      
      [ uuid(21FD49D6-3D30-40EA-AF5A-043ABDAD8074),
        helpstring("MyClock Control"), control ]
      coclass MyClock
      {
        [default] dispinterface _DMyClock;
        [default, source] dispinterface _DMyClockEvents;
      };
      
    };

Чтобы проверить, что элемент управления имеет сейчас свойства BackColor и ForeColor, выполните следующее

  • Постройте проект и запустите утилиту ActiveX Control Test Container
  • Откройте сохраненную нами ранее сессию под именем TestMyClock с размещенным для тестирования элементом управления MyClock
  • Выберите команду Container/Ambient Properties тестовой утилиты или нажмите кнопку с изображением лупы на панели инструментов этой утилиты рис25

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

Александр Даниленко
Александр Даниленко
Стоит Windows 8 Pro, Visual Studio 2010 Express Edition .