您的位置:首页 > 大数据 > 人工智能

处理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:

return 0 ;   // WRONG !!!
Windows将一个WM_PAINT消息放到消息队列中,是因为显示区域的一部分无效。如果不呼叫BeginPaint和EndPaint(或者ValidateRect),则Windows不会使该区域变为有效。相反,Windows将发送另一个WM_PAINT消息,且一直发送下去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows