Добавление текста в элемент управления.
Добавим базовое свойство 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();