У меня есть класс CListCtrl, для которого я хотел бы легко изменить размер шрифта.Я переклассифицировал CListCtrl как MyListControl.Я могу успешно установить шрифт, используя этот код в обработчике события PreSubclassWindow:
void MyListControl::PreSubclassWindow()
{
CListCtrl::PreSubclassWindow();
// from http://support.microsoft.com/kb/85518
LOGFONT lf; // Used to create the CFont.
memset(&lf, 0, sizeof(LOGFONT)); // Clear out structure.
lf.lfHeight = 20; // Request a 20-pixel-high font
strcpy(lf.lfFaceName, "Arial"); // with face name "Arial".
font_.CreateFontIndirect(&lf); // Create the font.
// Use the font to paint a control.
SetFont(&font_);
}
Это работает.Тем не менее, я хотел бы создать метод SetFontSize (int size), который просто изменит существующий размер шрифта (оставив лицо и другие характеристики как есть).Поэтому я считаю, что этот метод должен был бы получить существующий шрифт, а затем изменить размер шрифта, но мои попытки сделать это потерпели неудачу (это убивает мою программу):
void MyListControl::SetFontSize(int pixelHeight)
{
LOGFONT lf; // Used to create the CFont.
CFont *currentFont = GetFont();
currentFont->GetLogFont(&lf);
LOGFONT lfNew = lf;
lfNew.lfHeight = pixelHeight; // Request a 20-pixel-high font
font_.CreateFontIndirect(&lf); // Create the font.
// Use the font to paint a control.
SetFont(&font_);
}
Как мне создать этот метод?1007 *