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使窗口失效重重画,在这不是多此一举吗
是为什么,打错了,不好意思
如
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) ; 是刷新指定区域。
据我所知,那确实是多此一举,完全可以删除掉,不会影响运行结果.
多此一举,可以删除!!!