MFC: Динамически изменять размер шрифта элемента управления?

У меня есть класс 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_);

}

Как я могу создать этот метод?

5
задан User 1 October 2011 в 00:00
поделиться