| 

.NET C# Java Javascript Exception

1
Ich habe das Problem, dass ich gerne die Farbe eines statischens Textes ändern will, jedoch nicht weiß, wo ich anfangen soll. Ich habe viel und lange mit Google gesucht, jedoch nichts gefunden, was ich gebrauchen könnte (vielleicht verwende ich auch die falschen Suchbegriffe).

Ich habe es mit der Message WM_CTLCOLORSTATIC probiert, aber wie ich mittlerweile herausgefunden habe, dient diese dazu, die Hintergrundfarbe zu ändern, nicht die Vordergrundfarbe. Mein Quelltext sieht zu Zeit so aus:
if (_MakeRed == 1) {
(HWND)lParam = GetDlgItem(hDlg, ID_DETAILS);
if (lParam == ID_DETAILS) {
SetTextColor((HDC)wParam, RGB(255, 0, 0));
}
} else {
(HWND)lParam = GetDlgItem(hDlg, ID_DETAILS);
if (lParam == ID_DETAILS) {
SetTextColor((HDC)wParam, RGB(255, 255, 255));
}
}
return (BOOL)hBrush;
break;


case WM_CREATE:
hBrush = CreateSolidBrush(GetSysColor(COLOR_MENU));
break;


case WM_DESTROY:
DeleteObject(hBrush);


Gibt es eine Möglichkeit, wie ich die Vordegrundfarbe eines Statics ändern kann ?
27.08.2012
starki 603 1 1 8
2 Antworten
1
Hi starki,

dein Code funktioniert zwar, ist aber nicht ganz sauber/korrekt!

Die Anweisung
if ((HWND)lParam = GetDlgItem(hDlg, ID_DETAILS))
ist eine Zuweisung und kein Vergleich (= anstatt ==)!

So wäre es sauberer:

case WM_CTLCOLORSTATIC:
{
if (GetDlgItem(hDlg, ID_DETAILS) == (HWND)lParam)) // oder: if (GetDlgCtrlID((HWND)lParam) == ID_DETAILS)
{
if (_MakeRed == 1) {
SetTextColor((HDC)wParam, RGB(255,0,0));
} else {
SetTextColor((HDC)wParam, RGB(255,255,255));
}
SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE));
}

return (int)GetSysColorBrush(COLOR_BTNFACE);
}
27.08.2012
erh 86 1 3
0
OK, ich hab selbst die Antwort gefunden. Man braucht nur folgende Zeilen:

case WM_CTLCOLORSTATIC:

if (_MakeRed == 1) {
if ((HWND)lParam = GetDlgItem(hDlg, ID_DETAILS)) {
SetTextColor((HDC)wParam, RGB(255, 0, 0));
SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE));
return (int)GetSysColorBrush(COLOR_BTNFACE);
}
} else {
if ((HWND)lParam = GetDlgItem(hDlg, ID_DETAILS)) {
SetTextColor((HDC)wParam, RGB(0, 0, 0));
SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE));
return (int)GetSysColorBrush(COLOR_BTNFACE);
}
}

break;
27.08.2012
starki 603 1 1 8

Stelle deine Visual-studio-Frage jetzt!