Постоянство Font property
От: Luzinoff  
Дата: 29.03.03 09:19
Оценка:
Создаю в конструкторе IFontDisp m_pFont так :
 
static const FONTDESC _fontdesc = 
{sizeof(FONTDESC), OLESTR("times new roman"), FONTSIZE( 14 ), 
FW_BOLD, ANSI_CHARSET, TRUE, FALSE, FALSE }; 
FONTDESC fd=_fontdesc; 
OleCreateFontIndirect(&fd, IID_IFontDisp, (void**)&m_pFont );

добавил в карту свойств так:
 
BEGIN_PROP_MAP(CAxPMITCheckBox ) 
PROP_ENTRY("Font", DISPID_FONT, CLSID_StockFontPage) 
END_PROP_MAP()

Реализовал свойства putref put И get
Почему не работает постоянство свойств ?
C уважением, Лузинов Андрей Олегович.

Re: Что такое "постоянство свойств"?
От: Vi2 Удмуртия http://www.adem.ru
Дата: 29.03.03 10:30
Оценка:
Здравствуйте, Luzinoff, Вы писали:

L>Реализовал свойства putref put И get Почему не работает постоянство свойств ?

Что такое "постоянство свойств"? Свойство, доступное только для чтения? Тогда не реализовывай ни putref, ни put для него.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Что такое "постоянство свойств"?
От: Luzinoff  
Дата: 29.03.03 10:59
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>Что такое "постоянство свойств"?


Когда в desing-time в VBasic устанавливаешь шрифт для моего ActiveX
то при запуске программы шрифт берется не из конструктора (значение шрифта по умолчанию)
а то которое было установленно в desing-time.
C уважением, Лузинов Андрей Олегович.

Re[3]: Немного о Контролах
От: Vi2 Удмуртия http://www.adem.ru
Дата: 29.03.03 11:11
Оценка:
Здравствуйте, Luzinoff, Вы писали:

L>Когда в desing-time в VBasic устанавливаешь шрифт для моего ActiveX, то при запуске программы шрифт берется не из конструктора (значение шрифта по умолчанию), а то которое было установленно в desing-time.

Это нормальное поведение Контрола.

Не давай устанавливать это свойство в desing-time.

Я не спец по Контролам, но существуют два режима создания Контрола — самое первое (параметры берутся по умолчанию), и последующие (параметры берутся из хранилища).

С другой стороны, Контрол знает и может различить desing-time и run-time, чтобы принять или отвергнуть что-либо. Или поменять свое поведение.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[4]: Немного о Контролах
От: Luzinoff  
Дата: 29.03.03 11:14
Оценка:
Когда в desing-time в VBasic устанавливаешь шрифт для моего ActiveX, то при запуске программы шрифт берется не из конструктора (значение шрифта по умолчанию), а то которое было установленно в desing-time.[/q]

Vi2>Это нормальное поведение Контрола.


Это нормальное поведение, но у меня оно не работает !!!
У меня всегда значение берется из конструктора, а должно браться из хрпанилища !!!
C уважением, Лузинов Андрей Олегович.

Re[5]: Dirty флаг
От: Vi2 Удмуртия http://www.adem.ru
Дата: 29.03.03 11:24
Оценка:
Здравствуйте, Luzinoff, Вы писали:

L>Это нормальное поведение, но у меня оно не работает !!!
L>У меня всегда значение берется из конструктора, а должно браться из хрпанилища !!!

Ну тогда это не постоянство свойств, а сохранение и восстановление свойства. Я-то думал, тебе нужно, чтобы свойство вообще не менялось.

Похоже, что Контрол твой не выставляет флаг "Грязности" (dirty флаг), говорящий о том, что в Контроле что-то изменилось со времени последней загрузки (loading). Это используется при сохранении/восстановлении Контрола по IPersist* механизму. Посмотри на реализацию в ATL этих свойств. Что-то ты делаешь не так.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[6]: Dirty флаг
От: Luzinoff  
Дата: 29.03.03 13:54
Оценка:
Vi2>Похоже, что Контрол твой не выставляет флаг "Грязности" (dirty флаг), говорящий о том, что в Контроле что-то изменилось со времени последней загрузки (loading). Это используется при сохранении/восстановлении Контрола по
IPersist* механизму. Посмотри на реализацию в ATL этих свойств. Что-то ты делаешь не так.

похоже на то, но странно так как в реализации put putref методов я использую
CStockPropImpl<CAxPMITCheckBox , IPMITCheckBox , &IID_IPMITCheckBox , &LIBID_PMITVISUALCONTROLSLib>::put_Font(pFont);

CStockPropImpl<CAxPMITCheckBox , IPMITCheckBox , &IID_IPMITCheckBox , &LIBID_PMITVISUALCONTROLSLib>::putref_Font(pFont);

а эти фукции выставляют флаг грязности...
C уважением, Лузинов Андрей Олегович.

Re[7]: Тогда карта BEGIN_PROP_MAP/END_PROP_MAP
От: Vi2 Удмуртия http://www.adem.ru
Дата: 31.03.03 04:45
Оценка:
Здравствуйте, Luzinoff, Вы писали:

L>похоже на то, но странно так как в реализации put putref методов я использую

L>CStockPropImpl<CAxPMITCheckBox , IPMITCheckBox , &IID_IPMITCheckBox , &LIBID_PMITVISUALCONTROLSLib>::put_Font(pFont);
L>CStockPropImpl<CAxPMITCheckBox , IPMITCheckBox , &IID_IPMITCheckBox , &LIBID_PMITVISUALCONTROLSLib>::putref_Font(pFont);

L>а эти фукции выставляют флаг грязности...

Однако, проверь карту BEGIN_PROP_MAP/END_PROP_MAP. Включено ли туда свойство Font и как? Именно BEGIN_PROP_MAP/END_PROP_MAP определяет сохранение и восстановление свойств в IPersist*.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.