SetBkColor und SetTextColor
-
Hi!
Warum funzt folgender Code nicht?BeginPaint(hwnd, &ps); SetBkColor (ps.hdc, RGB(0,0,255)); Rectangle (ps.hdc, x, y, (int)LOWORD(lCoords), (int)HIWORD(lCoords)); EndPaint(hwnd, &ps);
Ich möchte Ein rechteck zeichnen, dessen Hintergrund dem des Fensters entspricht, und dessen Linienfarbe blau ist. Mit dem obigen Code wollte ich mal testen, ob ich eine andere Hintergrundfarbe für das Rechtecht einstellen kann, aber es funkt nicht. Das Rechteck ist weiterhin Weiss.
a) Warum geht SetBkColor oben nicht?
b) Wie kann ich die Linienfarbe bei dem Rechteck blau und den Hintergrund genauso machen wie die Fensterfarbe??Besten Dank,
code_pilot
-
FillRect
-
Wenn man nicht zu faul wäre, in die MSDN zu schauen, sähe man folgendes:
The rectangle is outlined by using the current pen and filled by using the current brush.
Liegt also nicht am SetBkColor. Ist ja auch logisch, denn die Füllung eines Rechtecks hat gar nix mit dem Hintergrund zutun.
-
SelectObject
-
Original erstellt von RenéG:
Liegt also nicht am SetBkColor. Ist ja auch logisch...Ja und wie setzt ich so nen Brush???
-
SelectObject! Dazu auc noch GetStockObject und CreateBrush (so heißen die glaub ich)
-
Mit SelectObject. Wurde doch schon gesagt.
-
Wenn du nur einen Rahmen (Frame) zeichnen willst, würde ich auch die zuständige Funktion FrameRect(HDC, *RECT, HBRUSH); verwenden.
Für einen blauen Rahmen könnte man es so machen:HBRUSH hBlueBrush; RECT rWindow; GetClientRect(hwnd, &rWindow); hBlueBrush=CraeteSolidBrush(RGB(0,0,128)); FrameRect(hdc, &rWindow, hBlueBrush); DeleteObject(hBlueBrush);
natürlich sollte man die Brush nicht bei jedem WM_PAINT Aufruf neu erstellen, sonder einmal bei WM_CREATE, z.B. einer statischen Variablen zuweisen und die Brush bei WM_DESTROY wieder löschen.
-
jau vielen Dank erstmal :):):):):)
code_pilot