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
--------------------
-
Behandle OnCtlColor
http://msdn.microsoft.com/de-de/library/0wwk06hc(VS.80).aspxoder mach es wie TN062
http://msdn.microsoft.com/de-de/library/eeah46xd(VS.80).aspx
-
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,
hmmmmdie 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

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