Farbe ändern im Controll Edit.



  • hallo,
    ich habe Visual Studio 2003 und möchte gerne die Farbe ändern.

    ...
    test = "hallo Welt"; // <- in rot bitte 🙂
    Updatedata(FALSE);
    ...
    ---------------------
    | CString test | <- kommt hier rein
    --------------------


  • Mod



  • thx.

    hmmmm
    ich habe ein bischen herumgegoogelt,

    WM_CTLCOLOR per Mausklick ins leben gerufen und dann die folgende Zeile eingefügt.

    pDC->SetTextColor(RGB(0,0,255));

    Nach dem compilieren, habe ich festgestellt, alles ist in blauer Schrift.

    die pdc Zeile wieder herausgenommen und vor der Zeile
    test = "test";
    reingestetzt.

    error C2065: 'pDC' : undeclared identifier
    error C2227: left of '->SetTextColor' must point to class/struct/union



  • also wenn du das so machst geht das mit sicherheit:

    HBRUSH CColorManPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	// TODO: Attribute des Gerätekontexts hier ändern
    	int nCtrl = pWnd->GetDlgCtrlID();
    	if(nCtrl == IDC_Deine_Edit_ID)
    	{
    	    pDC->SetTextColor(RGB(0,0,255)); 
    	}
    
    	// TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
    	return hbr;
    

    Gruß



  • thx
    ok,
    hmmmm

    die Idee war die, ich drücke auf den Knopf (ID_Check) und mein Prog berechnet etwas,wenn das Ergebnis stimmt, dann kommt..

    Updatedata(TRUE)
    m_log = "Fehler"; // in Rot
    Updatedata(FALSE)

    ansonsten

    Updatedata(TRUE)
    m_log = "alles ok"; // in grün
    Updatedata(FALSE)

    kann man es so machen, ich rufe nur die OnCtlColor auf, wenn mein Ergebnis Falsch ist, dann ist der Sonntag schon gerettet 🙂


  • Mod

    Nein! Man kann nicht einfach OnCtlColor so aufrufen. Das wird im COntext von WM_PAINT gemacht.

    Also setze Dir ein Flag in der Klasse welche Farbe Du gerne hättest, dann wwird OnCtlCOlor aufgerufenund diese Funktion entscheidet anhand des Flags welche Farbe genommen wird.



  • Erstell dir doch einen Menber in deiner Klasse :

    COLORREF m_txt_Color; //Speicher die Textfarbe vom Edit
    

    und im Quelltext:

    Updatedata(TRUE)
    m_log = "Fehler"; // in Rot
    m_txt_Color = RGB(255,0,0);
    Updatedata(FALSE)
    
    ansonsten
    
    Updatedata(TRUE)
    m_log = "alles ok"; // in grün
    m_txt_Color = RGB(0,255,0);
    Updatedata(FALSE)
    

    und:

    HBRUSH CColorManPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        // TODO: Attribute des Gerätekontexts hier ändern
        int nCtrl = pWnd->GetDlgCtrlID();
        if(nCtrl == IDC_Deine_Edit_ID)
        {
            pDC->SetTextColor(m_txt_Color);
        }
    
        // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
        return hbr; 
    }
    

    Ich Wüsste da net wo das Problem ist.



  • thx,
    ich finde das echt super wie ihr mir helft.1000 Dank.
    ok, das funkt.

    dummerweise wird dann alles in Grün oder Rot im Log Fenster.Ich will aber NUR ein Wort in Rot haben.

    kleiner Fehler von mir

    es heist
    m_log += "Fehler"; und nicht m_log = "Fehler";

    Ich will nicht nerven,ansonsten gebe ich mich mit alles in Grün oder Rot zufrieden.


  • Mod

    Wenn teilweise Text in anderen Farben und Formaten willst, dann solltest Du Dich mit einem CRichEditCtrl auseinandersetzen, dann musst Du Dich allerdings von UpdateData verabschieden.


Anmelden zum Antworten