WM_PAINT中加个InvalidateRect是问什么

来源:百度知道 编辑:UC知道 时间:2024/07/02 08:26:51
WM_PAINT中加个InvalidateRect是问什么

case WM_PAINT :
InvalidateRect (hwnd, &rect, TRUE) ;

hdc = BeginPaint (hwnd, &ps) ;

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
SetBkMode (hdc, TRANSPARENT) ;

TextOut (hdc, 24 * cxChar, cyChar, szTop, lstrlen (szTop)) ;
TextOut (hdc, 24 * cxChar, cyChar, szUnd, lstrlen (szUnd)) ;

EndPaint (hwnd, &ps) ;
return 0 ;

不是因为窗口需要重画所以要调用wm_paint,而InvalidateRect使窗口失效重重画,在这不是多此一举吗
是为什么,打错了,不好意思

InvalidateRect (hwnd, &rect, TRUE) ;

让特定窗口hwnd中的矩形区域(&rect所指向的)无效,也就是让这部分重绘
和Invalidate不同,Invalidate是让整个窗口无效

InvalidateRect (hwnd, &rect, TRUE) ; 是刷新指定区域。

据我所知,那确实是多此一举,完全可以删除掉,不会影响运行结果.

多此一举,可以删除!!!