CButton font ändern
-
Hallo Leute,
ich habe einen Button bei welchem ich zur Laufzeit den Font ändern will.
Ich versuche das im Moment so:
CFont lfont; lfont.CreateFont( 5, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline FALSE, // cStrikeOut DEFAULT_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH, // nPitchAndFamily "Arial"); // lpszFacename m_wndMyButton.SetFont(&lfont,true);Leider ändert sich die Font art nicht.
Muss ich noch einen Repaint auslösen oder etwas ähnliches?
-
Das CFont Objekt muss solange gültig sein, wie auch das Control existiert. Wenn also das Font Objekt bei Dir auf dem Stack liegt geht das nicht. Platziere das CFont Objekt in die Elternfenster-Klasse des Buttons.
-
Danke hat funktioniert.
Manchmal steht man im Wald.

-
Wenn man das bei einer Dialoganwendung (Memberelemente CFont* pFont1 usw.) in OnInitDialog mit pFont1 = new CFont usw. auf dem Heap anlegt, wo muss man dann pFont1 usw. "deleten", damit keine Memory Leaks entstehen?
-
In DestroyWindow oder im Destruktor der Klasse.
-
Danke, habe DestroyWindow() gewählt.
-
Besser gar nicht mit new anlegen, sondern als normalen member (nicht als Pointer) in die CDialog Klasse einbetten. Einfach den Font in OnInitDialog anlegen. Der Destruktor räumt dann auf.