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

为什么WndProc里只要有 WM_PAINT就占用cpu 100%?解决方案

2012-01-23 
为什么WndProc里只要有 WM_PAINT就占用cpu 100%?我的wndproc定义如下LRESULTCALLBACKWndProc(HWNDhWnd,UIN

为什么WndProc里只要有 WM_PAINT就占用cpu 100%?
我的wndproc定义如下

LRESULT   CALLBACK   WndProc(HWND   hWnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)   {
switch(message){
    case   WM_CREATE:
return   0;
    case   WM_LBUTTONDOWN:
return   0;
    case   WM_PAINT:   //只要有这2行,程序一运行就占用cpu   100%
return   0;//去掉这2行就一切正常,请问这是为什么?
    case   WM_DESTROY:
PostQuitMessage(   0   );
return   0;
}
return   DefWindowProc(   hWnd,   message,   wParam,   lParam   );
}

[解决办法]
因为窗口时刻都会检查自身是否存在Update Regions,如果有则会发送WM_PAINT消息,直到调用BeginPaint,EndPaint处理后,窗口才会把Update Regions置空。所以你的WM_PAINT里没有调用BeginPaint和EndPaint处理重绘消息,WM_PAINT消息就会不断被发送,陷入死循环。把那两行去掉,WM_PAINT消息就会在DefWindowProc得到处理,默认的处理就是调用BeginPaint和EndPaint把窗口的Update Regions置空。所以你在WM_PAINT里加上这两句,就会正常。

热点排行