Witam!
Aby zmienić kolor tła kontrolki EDIT trzeba samodzielnie obsłużyć komunikat WM_CTLCOLOREDIT
To masz przykład ale w MASM ponieważ ja nie piszę w C++ i mógłbym coś pomylić w tłumaczeniu.
.data
hBrush dd ?
.code
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_CREATE
......
invoke CreateSolidBrush, 000000FFh ;Na przykład czerwone tło
mov hBrush, eax
.......
.ELSEIF uMsg==WM_DESTROY
.......
invoke DeleteObject, hBrush
.......
.ELSEIF uMsg==WM_CTLCOLOREDIT
.......
invoke SetTextColor,wParam, 0000FFFFh ;Na przykład żółty tekst
invoke SetBkColor,wParam,000000FFh ;Na przykład czerwone tło pod tekstem
mov eax, hBrush
ret
.ELSEIF uMsg==WM_COMMAND
.......
.ENDIF
.......
WndProc endp
Mam nadzieję że ten przykład Ci pomoże. A może znajdzie sie ktoś kto Ci to przetłumaczy na C++.
Generalnie chodzi o to że przy tworzeniu okna musisz sobie utwożyć Brush o określonym kolorze i zachować jego uchwyt w zmiennej. Póżniej podczas obsługi komunikatu WM_CTLCOLOREDIT możesz zmienić kolor tekstu (SetTextColor) i kolor tła pod tekstem (SetBkColor). Aby zmienić kolor tła całego EDIT-a trzeva zwrócić uchwyt utworzonego pędzla (hBrush) . Oczywiście przy niszczeniu okna trzeba ten uchwyt zwolnić (DeleteObject)
Mam nadzieje że to co napisałem jest choć cześciowo zrozumiałe :D
Dodam jescze że może być kłopot z samodzielną obsługą komunikatu WM_PAINT przynajmniej o ile dobrze pamientam miałem z tym problemy
gdy samodzielnie obsługiwałem komunkat WM_CTLCOLORSTATIC
nie wiem na 100% jak przy editach ale ostrzegam. Sprawdź sam.
Niestety nie znam innego być może lepszego i prostrzego sposobu :(
Pozdrowienia