ActiveX с нуля

         

Методы ActiveX.


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

Методы подобны функциям-членам в С++. Имеется два типа методов, которые можно реализовать в Вашем контрольном элементе: базовые и пользовательские. Также  как и базовые события, базовые методы реализованы в классе COleControl.

MFC реализует механизм для поддержки и базовых и пользовательских методов. СOleControl  - наследних класса CWnd, поэтому он использует методы, общие для всех элементов ActiveX. Вторая часть механизма, обеспечиваемая MFC, - это карта диспетчеризации (dispatch map). Эта карта подобна карте сообщений (message map), однако, вместо связи функций с оконными сообщениями карта диспетчеризации осуществляет связь виртуальных методов с идентификаторами IDispatch.

Карта диспетчеризации должна быть объявлена в .H файле элемента:

DECLARE_DISPATCH_MAP()

Главная задача этой карты - связать методы, используемые контейнерами, c  методами контрольного элемента, реализующими определенные действия. Карта определяется в файле .CPP:

BEGIN_DISPATCH_MAP(CMyCtrlCtrl, COleControl)

            //{{AFX_DISPATCH_MAP(CMyCtrlCtrl)

            …

            //}}AFX_DISPATCH_MAP

END_DISPATCH_MAP()

При создании элемента с помощью ControlWizard  нужные строки добавляются автоматически.



Содержание раздела