调用InvalidateRect后,OnPaint函数是如何知道自己要绘哪块rect的?它没有RECT型的参数啊! 调用InvalidateRect函数就会触发OnPaint函数,但是OnPaint函数中没有RECT或者CRect类型的参数啊!它是如何知道画哪一块的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 OnPaint 在空闲的时间绘制窗口在消息队列里,只有一个WM_PAINT消息,rect是累加的如果你想让窗口立即绘制在InvalidateRect之后调用SendMessage(WM_PAINT) OnPaint好象是一直执行,而且他处理的是这个界面。 系统知道啊、,他就更新InvalidateRect中指定的rect区域 如果OnPaint函数中什么都没有处理,将在::DefWindowsProc中处理,其中有默认的RECT。 那在我自己重载的OnPaint函数中,能有方法知道我要重绘的区域吗? 调用:BOOL InvalidateRect( HWND hWnd, // handle of window with changed update region CONST RECT *lpRect, // address of rectangle coordinates BOOL bErase // erase-background flag); BOOL GetUpdateRect( LPRECT lpRect, BOOL bErase = FALSE ); Invalidate是全部刷新如果你要用InvalidateRect,你要给它一个crect的区域 调用::BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);之后把需要重绘的无效区域放在PAINTSTRUCT结构的rcPaint成员中;typedef struct tagPAINTSTRUCT { HDC hdc; BOOL fErase; RECT rcPaint; BOOL fRestore; BOOL fIncUpdate; BYTE rgbReserved[32];} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT; vc中 if( AA && BB && CC ).... ,当AA==False 时还对BB,CC作判断吗? 初学网络编程,IP(TCP/UDP)通信问题,请高手指点 下周日(20:00)讲二级C的试题 代码注入的三种方法 钩子(HOOK) ATL控件设置背景透明 文档/视图 (高分求)dll如何向调用它的exe返回字符串? 求 《MFC Visual C++ 6 编程技术内幕》配套光盘 初学VC,问个问题 菜鸟的问题 高手看看发送信息问题 简单任务
在消息队列里,只有一个WM_PAINT消息,rect是累加的
如果你想让窗口立即绘制
在InvalidateRect之后
调用SendMessage(WM_PAINT)
BOOL InvalidateRect(
HWND hWnd, // handle of window with changed update region
CONST RECT *lpRect,
// address of rectangle coordinates
BOOL bErase // erase-background flag
);
把需要重绘的无效区域放在PAINTSTRUCT结构的rcPaint成员中;
typedef struct tagPAINTSTRUCT {
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[32];
} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;