- •Что такое ole
- •Что такое ActiveX?
- •Что включает в себя ActiveX?
- •Что такое элемент управления ActiveX?
- •Что содержит класс модуля элемента: cFirstApp? Кратко опишите функции в классе.
- •Что содержит класс элемента: cFirstCtrl?
- •Что делает функция OnDraw?
- •Для чего используется guid?
- •Каким образом можно добавить новый метод?
Что такое элемент управления ActiveX?
Элемент управления ActiveX ― это многократно используемый компонент программы, основанный на модели COM, который поддерживает широкий диапазон функциональных возможностей OLE и может быть настроен для соответствия многим потребностям программного обеспечения. Элементы управления ActiveX разработаны для использования и в обычных контейнерах элементов управления ActiveX и в Интернете в страницах Интернета. Можно создать элементы управления ActiveX с MFC.
Что содержит класс модуля элемента: cFirstApp? Кратко опишите функции в классе.
Этот класс является потомком класса COleControlModule , а не класса CWinApp. Это справедливо обычно для всех элементов управления, построенных на основе MFC.
Класс же COleControlModule библиотеки MFC в свою очередь просто является производным от класса CWinApp , в котором для удобства переопределены методы InitInstance и ExitInstance.
Методы класса
Файл First.cpp - это основной исходный файл для элемента управления First Control. Функциями этого файла являются: регистрация элемента управления; обеспечение инициализации элемента управления; удаление регистрации элемента управления, когда он больше не нужен.
В этом файле происходит создание глобального объекта класса CFirstApp, порожденного от класса ColeControlModul e. В проекте может быть только один объект приложения, т.е. один объект класса, порожденного от COleControlModule.
MFC ActiveX Contro lWizard сгенерировал GUID (уникальный идентификатор) для библиотеки типов элемента управления с именем _tlid и принял, что старший номер версии библиотеки равен 1, а младший номер – 0. Эта информация будет записана в реестр во время выполнения макроса INPLEMENT_OLETYPELIB , находящего в FirstCtl.cpp.
Файл First.cpp содержит реализацию методов класса CFirstApp. Метод InitInstance отвечает за инициализацию DLL-файла: Он вызывается системой при первой загрузке элемента управления в память. Также этот метод вызывается при создании каждого экземпляра First Control. В этом методе можно выполнить собственные методы инициализации, однако необходимо всегда в первую очередь вызвать метод InitInstance базового класса COleControlModule.
Метод ExitInstance вызывается непосредственно перед тем, как элемент управления выгружается из памяти, и очищает память, освобождает дескрипторы, удаляет GDI-объекты и т.д:
Регистрация элемента управления
В файле First.cpp кроме методов класса CFirstApp определены две функции: DllRegisterServer (заносит данные в системный реестр) и DllUnregisterServer (удаляет данные из системного реестра):
Что содержит класс элемента: cFirstCtrl?
В классе COleControl реализованы все интерфейсы, необходимые для работы элемента управления. Он скрывает детали реализации элемента и имеет понятный, объектно-ориентированный интерфейс, который используется элементами управления при выполнении собственных функций.
Конструктор и деструктор класса
В конструкторе класса CFirstCtrl происходит вызов функции InitializeIIDs . Эта функция должна вызываться только в конструкторе элемента управления. Она сообщает базовому классу идентификаторы интерфейсов (IID) элемента управления. В данном случае класс COleControl получает идентификатор базового интерфейса автоматизации и идентификатор интерфейса диспетчеризации.
Конструктор класса в своем первоначальном виде ничего не делает, но в него можно по мере необходимости добавить код, очищающий все данные экземпляра элемента управления.
Методы класса
Класс CFirstCtrl переопределяет некоторые методы базового класса: OnDraw, DoPropExchange, OnResetState . Метод OnDraw вызывается операционной системой, когда элемент управления должен быть перерисован.
Вызов метода DoPropExchange происходит, когда элемент управления записывается или считывается из постоянного хранилища (с диска). Эта функция отвечает за сохранение (запись на диск) и восстановление (чтение с диска) информации о свойствах элемента и его версии.
Вызов метода OnResetState осуществляет система, когда элемент управления должен сбросить свои свойства (установить их в первоначальные значения). Если ранее сохраненный элемент управления не может быть правильно воссоздан в памяти (то есть не могут быть правильно восстановлены значения его свойств), то система дает указание вновь созданному элементу управления (в который помещаются данные, считанные с диска) присвоить своим свойствам значения, имеющие хоть какой-то смысл, т.е. значения по умолчанию.
