MFC: changement dynamique de contrôle de la taille de la police?

J'ai une CListCtrl classe que j'aimerais être en mesure de facilement modifier la taille de police. Je sous-classé CListCtrl comme MyListControl. Je peux définir correctement la police à l'aide de ce code dans le PreSubclassWindow gestionnaire d'événement:

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_);
}

Cela fonctionne. Cependant, ce que je voudrais faire est de créer une méthode appelée SetFontSize(int taille) qui va tout simplement changer la taille de la police (en laissant le visage et d'autres caractéristiques comme l'est). Je pense donc que cette méthode aurait besoin pour obtenir les polices existantes et de modifier la taille de police, mais mes tentatives ont échoué (il tue mon programme):

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_);

}

Comment puis-je créer cette méthode?

En quoi cette "tuer" votre programme?
Il y a un mfc AFFIRMER que cela échoue.

OriginalL'auteur User | 2011-10-01