Как изменить код при использовании пользовательского свойства шрифта.
Вы должны изменить код вручную, чтобы добавленное Вами свойство использовалось правильно.
В файл (.H) добавьте переменную:
protected:
CFontHolder m_fontHeading;
В файле (.CPP):
· Инициализируйте m_fontHeading в конструкторе:
CMyCtrlCtrl:: CMyCtrlCtrl
( ) : m_fontHeading( &m_xFontNotification )
{
// [...тело конструктора...]
}
· Объявите статическую структуру FONTDESC, содержащую параметры шрифта поумолчанию:
static const FONTDESC _fontdescHeading =
{ sizeof(FONTDESC), OLESTR("MS Sans Serif"), FONTSIZE( 12 ), FW_BOLD,
ANSI_CHARSET, FALSE, FALSE, FALSE };
· В методе DoPropExchange
добавьте вызов PX_Font:
void CMyCtrlCtrl::DoPropExchange(CPropExchange* pPX)
{
COleControl::DoPropExchange(pPX);
// [...другие PX_ function ...]
PX_Font(pPX, _T("HeadingFont"), m_fontHeading, &_fontdescHeading);
}
· Закончите реализацию метода GetHeadingFont:
LPFONTDISP CMyCtrlCtrl::GetHeadingFont( )
{
return m_fontHeading.GetFontDispatch( );
}
· Закончите реализацию метода SetHeadingFont:
void CMyCtrlCtrl::SetHeadingFont( LPFONTDISP newValue )
{
m_fontHeading.InitializeFont( &_fontdescHeading, newValue);
OnFontChanged(); //Объявить об изменениях
SetModifiedFlag( );
}
· Измените метод OnDraw :
CFont* pOldHeadingFont;
pOldHeadingFont = SelectFontObject(pdc, m_fontHeading);
// рисование новым шрифтом
pdc->SelectObject(pOldHeadingFont);
После создания свойства шрифта следует реализовать страницу для изменения этого свойства при использовании контрольного элемента. Для добавления такой страницы измените макрос BEGIN_PROPPAGEIDS , вставив строку:
PROPPAGEID(CLSID_CFontPropPage)
Вы должны также изменить число страниц в макросе BEGIN_PROPPAGEIDS:
BEGIN_PROPPAGEIDS(CMyCtrlCtrl, 2)