CEdit Font ändern
-
Hallo,
ich habe in meiner von CEdit abgeleiteten Klasse den Font geändert. Wenn ich aber Text (oder einen Teil des Textes) selektiere, wird dieser mit dem alten, ursprünglichen Font dargestellt. Kann mir jemand einen Tip oder Link geben, wie ich dieses Problem in den Griff bekomme??
Im Voraus besten Dank
-
Poste mal bitte den Teil wo du Sie geändert hast.
-
Hallo guenni81,
also, es gibt 2 Member-Variablen:LOGFONT m_lf; CFont m_font;im Konstruktor:
// Hole aktuellen Font ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf); m_font.CreateFontIndirect(&m_lf);Dann gibts ne Member-Funktion, z.B.
void CEditMore::SetFontBold(BOOL bBold) { m_lf.lfWeight = bBold ? FW_BOLD : FW_NORMAL; m_font.DeleteObject(); BOOL bCreated = m_font.CreateFontIndirect(&m_lf); RedrawWindow(); }Und in der Message-Funktion (WM_CTLCOLOR)
HBRUSH CEditMore::CtlColor(CDC* pDC, UINT nCtlColor) { pDC->SetTextColor ( m_clrText ); // text pDC->SetBkColor ( m_clrTextBkgnd ); // text bkgnd pDC->SelectObject (&m_font); // Font m_brBkgnd.DeleteObject(); m_brBkgnd.CreateSolidBrush( m_clrBkgnd ); return m_brBkgnd; }Vielleicht ist ja die WM_CTLCOLOR-Message die falsche, um den Font aufzurufen?
Danke schon mal für deine Mühe
-
CWnd::SetFont aufrufen und nicht in OnCtlColor den Font selektieren. Das haut nicht hin!
-
Hallo Martin,
vielen Dank, jetzt klappt es!
Das kommt davon, wenn man Code von irgendwo her kopiert...