还是这个WM_ERASEBKGND 和WM_PAINT的问题,重绘ING
时间:2011-12-10
来源:互联网
之前觉得已经理解了,但怎么理论和实践就是有差距呢,
原因如下:
C/C++ code
已知
WM_ERASEBKGND 擦出背景色
WM_PAINT绘制前景色
、、、、、、、、、、、、、、、、、、、、、、
窗口刚生成时(即调用UpdateWindows哪个函数时),触发WM_ERASEBKGND消息和WM_PAINT消息,如果没有自定义WM_ERASEBKGND则DefWindowProc()会调用注册窗口类的画刷(wnd.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);),我想在WM_PAINT贴图,代码如上,窗口刚出来时,背景是默认画刷,然后我自定义WM_ERASEBKGND,返回true,通知系统,窗口背景已经擦除,而结果是背景为透明(就是没有调用DefWindowProc()),j就是说不管擦不擦除背景,贴图都不出来,只有第二次产生WM_PAINT(点击最大最小,覆盖等),贴图才出来,这个我就不明白了,不过在WM_PAINT里TextOut文字可以出来,(是不是贴图是背景,文字是前景),还是有点晕,请详细解答
原因如下:
C/C++ code
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam) { PAINTSTRUCT ps; switch(msg) { case WM_ERASEBKGND: return true; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); ::GetClientRect(hwnd,&rect); hmendc=CreateCompatibleDC(hdc); hbtm=LoadBitmap(hInst,MAKEINTRESOURCE(bit[0])); SelectObject(hmendc,hbtm); GetObject(hbtm,sizeof(BITMAP),&bitmap); StretchBlt(hdc,0,0,rect.right,rect.bottom,hmendc,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); ::TextOut(hdc,100,100,"图书管理系统",strlen("图书管理系统")); ::DeleteObject(hbtm); DeleteDC(hmendc); EndPaint(hwnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,msg,wparam,lparam); } return 0; }
已知
WM_ERASEBKGND 擦出背景色
WM_PAINT绘制前景色
、、、、、、、、、、、、、、、、、、、、、、
窗口刚生成时(即调用UpdateWindows哪个函数时),触发WM_ERASEBKGND消息和WM_PAINT消息,如果没有自定义WM_ERASEBKGND则DefWindowProc()会调用注册窗口类的画刷(wnd.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);),我想在WM_PAINT贴图,代码如上,窗口刚出来时,背景是默认画刷,然后我自定义WM_ERASEBKGND,返回true,通知系统,窗口背景已经擦除,而结果是背景为透明(就是没有调用DefWindowProc()),j就是说不管擦不擦除背景,贴图都不出来,只有第二次产生WM_PAINT(点击最大最小,覆盖等),贴图才出来,这个我就不明白了,不过在WM_PAINT里TextOut文字可以出来,(是不是贴图是背景,文字是前景),还是有点晕,请详细解答
作者: Lyntion 发布时间: 2011-12-10
hdc=BeginPaint(hwnd,&ps);
::GetClientRect(hwnd,&rect);
检查:
ps.rcPaint
试试:
HDC hwindc = ::GetDC(NULL);// not hwnd;
hmendc=CreateCompatibleDC(hwindc);
::GetClientRect(hwnd,&rect);
检查:
ps.rcPaint
试试:
HDC hwindc = ::GetDC(NULL);// not hwnd;
hmendc=CreateCompatibleDC(hwindc);
作者: schlafenhamster 发布时间: 2011-12-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28