Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > ActiveX, свойство *IFontDisp, не работает Set() |
Автор: Dreamer_0x01 4.4.2008, 15:17 | ||||||||
Здравствуйте. Проблема в следующем. Пишу ActiveX компонент, у которого есть свойство Font1. Объявлено оно вот так:
Соответственно, в cpp-файле есть строки, сгенерированные студией:
и строки, добавленные мной:
В функции OnDraw() использую данное свойство для рисования текста, рисуется все нормально. Добавляем компонент в другой проект, в диалог, открываем свойства объекта - там видим свойство Font1. Изменяем его на какой-нибудь другой шрифт - изменения отображаются в компоненте. Но что интересно - при этов не вызывается функция свойства Set(). Чтобы это проверить, я поставил в эту функцию MessageBox() - он никогда не всплывает. (В функции Set свойств других типов сообщение всплывает при изменении свойства в дизайнере). Что у меня сделано не правильно, почему не вызывается функция Set? Вот код функции:
В аттаче я прикрепил этот тестовый проектик. Спасибо за внимание! |
Автор: Dreamer_0x01 4.4.2008, 15:32 |
file: |
Автор: Dreamer_0x01 7.4.2008, 10:52 |
Немного поэксперементировал. Выяснилось. что обработчик Set все-таки вызывается, если во внешнем коде, использующем данный ActiveX, принудительно вызвать метод SetFont1(); Однако, если задать шрифт в дизайнере диалога, на котором располагается наш компонент - визуально свойство меняется (объект перериствывается в соответствии с выбранными параметрами шрифта), но ожидаемого MessageBox мы все равно не получаем. Странно... |