首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

wm_erasebkgnd 的有关问题

2013-04-05 
wm_erasebkgnd 的问题问题1:子类化控件后,发现 父窗口的wm_erasebkgnd进不去了。只是进入子控件的erasebkgn

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?

热点排行