У меня есть класс 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_);
}
Как я могу создать этот метод?