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


  • Mod

    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...


Anmelden zum Antworten