ActiveX с нуля


Добавление текста в элемент управления.


Добавим базовое свойство  Caption для вывода текстового сообщения в элемент управления, а также базовое свойство Font для задания шрифта для этого сообщения.

1.

Выберите в меню View пункт ClassWizard.

2.      Выберите в открывшемся диалоге закладку Automation.

3.      В выпадающем списке Class Name выберите класс CMyCtrlCtrl (рис. 8).

4.      Щелкните кнопку Add Property. Появится диалог Add Property (рис. 9).

5.      Выберите имя свойства Caption в поле External Name, выберите переключатель Stocks.

6.      Щелкните кнопку Add Property. Появится диалог Add Property (рис. 9).

7.      Выберите имя свойства Font в поле External Name, выберите переключатель Stocks.

ClassWizard создает код для добавления свойств, изменяя CMyCtrlCtrl класс и MyCtrl.odl файл.

Карта диспетчеризации приобретает следующий вид:

BEGIN_DISPATCH_MAP(CMyCtrlCtrl, COleControl)

            //{{AFX_DISPATCH_MAP(CMyCtrlCtrl)

            DISP_PROPERTY_EX(CMyCtrlCtrl, "Shape", GetShape, SetShape, VT_I2)

            DISP_PROPERTY_EX(CMyCtrlCtrl, "Selected", GetSelected, SetNotSupported, VT_BOOL)

            DISP_PROPERTY_EX(CMyCtrlCtrl, "SelectColor", GetSelectColor, SetSelectColor, VT_COLOR)

            DISP_STOCKPROP_FORECOLOR()

            DISP_STOCKPROP_CAPTION()

            DISP_STOCKPROP_FONT()

            //}}AFX_DISPATCH_MAP

            DISP_FUNCTION_ID(CMyCtrlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)

END_DISPATCH_MAP()

Макросы DISP_STOCKPROP_FORECOLOR(), DISP_STOCKPROP_CAPTION(), DISP_STOCKPROP_FONT() разрешают использование базовых свойств. Для доступа к ним можно использовать методы Get/Set, определенные в классе COleControl, а также методы OnTextChanged(), OnFontChanged(), OnForeColorChanged(), которые вызываются при выполнении метода Set.

Все методы можно переопределить.

Получить значение свойства Caption можно не только с помощью метода GetText(), но и используя метод InternalGetText. Последний рекомендуется использовать всегда, когда возвращаемый текст нельзя модифицировать, так как этот метод возвращает ссылку на константную строку:

const CString& strCaption = InternalGetText();

 




- Начало -  - Назад -  - Вперед -