schriftfarbe in editbox
-
hi,
folgendes. Meien editbox ist deaktiviert. Damit man aber die farbe der schrift besser erkennt, würde ich sie gerne schwarz haben.
Ich habe mich jetzt schon hier um geschaut und verchiedene möglichkeiten festgestellt. mit denen ich nicht richtig weiss wohin.
Ich habe zuerst ne neue funktion erstellt, in der das steht:HBRUSH CHinzuDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pDC->GetDlgCtrlID() == IDC_Pfad) { // hbr = CreateSolidBrush(RGB(0, 0, 0)); pDC->SetTextColor(RGB(255, 100, 100)); return hbr; } else return hbr; }
und da habens ise mich auch schon verlassen.
WEnn ich noch die fkt mache in der die membervarible des Eingabefeldes Invalidate gesetzt wird, sagt er mir nur das dieses Invalidate kein Element von ...(ich glaube CString, von dem typ ist die membervariable) ist.
Bin ich den wenigstens auf dem richtigen weg??
und wie bekomme ich denn (vielleicht mit diesem ansatz) farbe in die schrift...Bitte helft mir.
MfG Afro
-
http://www.c-plusplus.net/forum/viewtopic.php?t=50151&highlight=editbox+schriftfarbe
Ansonsten kannst du, wenn du die Schrift schwarz willst, das Editfeld auch nur auf Read-Only setzen, ist ein Häkchen bei der Registerkarte "Styles"...
-
mal ne dumme andere frage was ist bitte ColorAlarm für einen variable???
an der stelle gibt er nähmlich einen fehler aus.
-
Natürlich von der Variable COLORREF .....
Gruß
:: NoName ::
-
so oder wie:
COLORREF ColorAlarm;
einfach drüber und geht???
-
Ja klar, hast du es schon versucht ?
Gruß
:: NoName ::
-
habe sie als member variable gesetzt...
und wo sag ich jetzt welche farbe die schrift haben soll???
-
hallo,
hat keiner mehr ne antwort???
das prob is jetzt das sich die farbe auch ändern soll.
Wo und wie???
bitte
-
setzen der Farbe
COLORREF farbe = RGB(192,192,192);Wenn die Farbe von Anfang an so sein soll dann setzt du das in OnInitDialog rein. Wenn sich die Farbe zur Laufzeit ändert, nicht vergessen den Brush vorher zerstören bevor du ihn mit einer neuen Farbe füllen willst.
-
Hallo,
nochmal, es funktioniert immer noch nicht.
jetzt haber ich drei neue funktionen eingefügt, aber es will nicht gehen.HBRUSH CHinzuDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pWnd->GetDlgCtrlID() == IDC_Pfad) { hbr = CreateSolidBrush(RGB(255, 100, 100));//Button soll grün werden return hbr; } else return hbr;
void CHinzuDlg::OnChangeEdit() { m_strfarbe.Invalidate(); }
void CHinzuDlg::OnBColorAlarm() { CColorDialog m_CColorDialog; UpdateData(true); // könnte auch entfallen, spielt keine rolle m_CColorDialog.DoModal(); ColorAlarm = m_CColorDialog.GetColor(); // ColorAlarm ist public und COLORREF UpdateData(false); //spielt auch keine rolle }
und dann habe ich noch in die OnInitDialog folgendes gesetzt:
COLORREF ColorAlarm = RGB(192,192,192);
ich weiss nciht warum aber die farbe wird nicht geändert,
sie ist noch genau so grau wie erst auch.
Wäre echt nett wenn einer den fehler finden würde... und mir sagt weil ich weiss es nicht mehr.
-
Du brauchst einen CBrush der in der Klasse immer gültig ist
Also in das .h File ungefähr folgendes:
class CDuMichAuch
{
....
Private:
CBrush m_BkBrush;
COLORREF m_ColorAlarm; // oder bei dir ColorAlarmim OnInitDialog schreibst rein:
m_ColorAlarm = RGB(255,0,0); // oder was auch immer
m_BkBrush.CreateSolidBrush(m_ColorAlarm);und in OnCtrlColor gibst du nicht den hbr zurück ( der wird nämlich beim verlassen der Funktion zerstört (siehe MSDN))
sonder schreibst rein:return m_BkBrush;
so schauts aus