处理WM_PAINT消息
2005-12-26 09:55
316 查看
一般地,处理WM_PAINT消息的形式如下:
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps); //取得设备内容句柄
使用GDI函数;
EndPaint(hwnd,&ps); //释放句柄
Return 0;
在处理WM_PAINT消息时,必须成对地呼叫BeginPaint和EndPaint。如果窗口消息处理程序不处理WM_PAINT消息,则它必须将WM_PAINT消息传递给Windows中DefWindowProc(内定窗口消息处理程序)。DefWindowProc以下列代码处理WM_PAINT消息:
case WM_PAINT:
BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
return 0 ;
这两个BeginPaint和EndPaint呼叫之间中没有任何叙述,仅仅使先前无效区域变为有效。但以下方法是错误的:
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps); //取得设备内容句柄
使用GDI函数;
EndPaint(hwnd,&ps); //释放句柄
Return 0;
在处理WM_PAINT消息时,必须成对地呼叫BeginPaint和EndPaint。如果窗口消息处理程序不处理WM_PAINT消息,则它必须将WM_PAINT消息传递给Windows中DefWindowProc(内定窗口消息处理程序)。DefWindowProc以下列代码处理WM_PAINT消息:
case WM_PAINT:
BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
return 0 ;
这两个BeginPaint和EndPaint呼叫之间中没有任何叙述,仅仅使先前无效区域变为有效。但以下方法是错误的:
case WM_PAINT: return 0 ; // WRONG !!!Windows将一个WM_PAINT消息放到消息队列中,是因为显示区域的一部分无效。如果不呼叫BeginPaint和EndPaint(或者ValidateRect),则Windows不会使该区域变为有效。相反,Windows将发送另一个WM_PAINT消息,且一直发送下去。
相关文章推荐
- WM_PAINT 消息不处理的可怕后果
- TWinControl、TCustomControl和TGraphicControl对WM_PAINT消息的三种不同处理(虚函数的特点就是升升降降)
- WM_PAINT消息处理过程
- MFC中窗口收到WM_PAINT消息是如何处理的,什么情况下产生WM_PAINT消息
- Win32 SDK基础(12)—— WM_PAINT消息的处理
- MFC与SDK中的重画问题 。。WM_PAINT消息的处理
- MFC与SDK中的重画问题 。。WM_PAINT消息的处理
- TWinControl.DefaultHandler里的CallWindowProc(FDefWndProc)还挺有深意的,TButton对WM_PAINT消息的处理就是靠它来处理的(以前不明白为什么总是要调用inherited,其实就是没有明白TWinControl.DefaultHandler的真正用处,而且还很有用)
- MFC与SDK中的重画问题 。。WM_PAINT消息的处理
- WM_PAINT 和 WM_ERASEBKGND 消息的区别
- WM_Paint 消息详解
- 关于WTL中对WM_PAINT中的处理
- wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘??
- MFC下WM_NOTIFY消息处理流程
- wm_paint 消息详细解析(
- WM_消息处理函数
- duilib CPaintManagerUI的WM_PAINT消息
- WM_CREATE和WM_INITDIALOG消息响应函数之区别,以及MFC应用程序中处理消息的...
- WM_NCCALCSIZE消息处理详解
- 处理WM_PAINT和WM_DRAWITEM