i superclass "EDIT" window...everything works except i cant modify background color and i really need that!i change cursor etc and it worx, except the .hbrBackground = (HBRUSH)GetStockObject(BLAC_BRUSH);......please help, also if exist any function in wm_paint that could color this would help but i didnt found it, except for setting color for text and textbackground..but i want to change whole background, thank you!
This message was edited by Hiroshimator, on 3/20/2001 2:22:22 PM
Geeko,
The WM_PAINT message doesn' paint the background, WM_ERASEBKGND does, cach that, and paint you background there.
Umbongo
but with what function, and why doesnt superclassing workx anyway? 10x for answer
As I just learned the other day, the WM_CTLCOLORSTATIC message is sent as a control is preparing to draw it's background. Intercept this message and you can change the color to that of your choice.
In my case, I had a dialog window with a read-only edit control, which unalterably defaults to a gray background. So I stuck the following message handler in the dialog proc to change this:
.ELSEIF uMsg == WM_CTLCOLORSTATIC
invoke GetDlgItem,hWnd,IDC_EDIT
.IF eax == lParam
invoke GetStockObject, WHITE_BRUSH
ret
.ELSE
mov eax, 1
ret
.ENDIF
Note we retuern the brush handle to change the color, or else return "1" to indicate we did NOT handle this message, as other controls would need this default processing.
-------------------------------
"Son, when you participate in sporting events, it’s not whether you win or lose:
it’s how drunk you get."Ernie: a read-only edit control acts like a static control: that's why Windows sends WM_CTLCOLORSTATIC message to the control when it needs to repaint the control. However, for normal edit control, you must intercept WM_CTLCOLOREDIT message instead.
Very thank you for reply, but i am wondering anyway why superclassing doesnt work. i superclass hrbBackground appropriate and it just doesnt go...if i change wndproc, cursor it works very well,
bye