wm_erasebkgnd 的问题
问题1:子类化控件后,发现 父窗口的wm_erasebkgnd进不去了。
只是进入子控件的erasebkgnd,这是什么原因?
问题2:
为什么我用wm_erasebkgnd无法对子窗口进行改变背景颜色?
别告诉我,去wm_ctlcolor里处理,我想知道原因。
hStatic=CreateWindow(_T("static"),_T("hellDDDDDDDDDo"),WS_CHILD|WS_VISIBLE,20,100,200,200,hWnd,(HMENU)4567,hInst,NULL);
LRESULT CALLBACK StaticProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HDC hdc;
if(message==WM_ERASEBKGND)
{
hdc=(HDC)wParam;
SetBkColor(hdc,RGB(0,233,220));
SetTextColor(hdc,RGB (255,0,0));
return 0;
}
return CallWindowProc((WNDPROC) OldProc,hWnd, message, wParam, lParam);
;
}
case WM_ERASEBKGND:
{
hdc=GetDC(hStatic);
SetBkMode(hdc,TRANSPARENT);
SetBkColor(hdc,RGB(0,233,220));
SetTextColor(hdc,RGB (255,0,0));
ReleaseDC(hStatic,hdc);
}
return 0;
[解决办法]
为什么我用wm_erasebkgnd无法对子窗口进行改变背景颜色?
你在onpaint中有做处理么?
[解决办法]
你是打算用窗口消息WM_ERASEBKGND?
为什么我没看到BOOL xxx::OnEraseBkgnd(CDC* pDC) 呢?
在类向导中添加WM_ERASEBKGND后会生成OnEraseBkgnd(),然后在函数中进行重绘背景即可。
有现成的消息函数不用你为什么要自己CallWindowProc?