函数原型如下:
BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL, // 指向一个矩形区域的指针,表示要更新的区域,如果为NULL,则重绘整个窗口
CRgn* prgnUpdate = NULL, // 指向一个剪辑区域对象的指针,表示要更新的区域
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE // 重绘标志,可选,默认为 RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE
);
参数解释:
- lpRectUpdate:指向一个 CRect 结构体或 RECT 结构体的指针,表示要更新的矩形区域。如果为 NULL,则表示重绘整个窗口。
- prgnUpdate:指向一个 CRgn 对象的指针,表示要更新的剪辑区域。
- flags:表示重绘的标志,是一个位掩码,可以使用以下常量按位组合:
- RDW_INVALIDATE:标记为无效区域,需要重绘。
- RDW_INTERNALPAINT:使用内部的 OnPaint 处理程序进行绘制。
- RDW_ERASE:在重绘之前擦除背景。
- RDW_VALIDATE:标记为有效区域,不需要重绘。
- RDW_NOINTERNALPAINT:不使用内部的 OnPaint 处理程序进行绘制。
- RDW_NOERASE:不擦除背景。
- RDW_NOCHILDREN:不重绘子窗口。
- RDW_ALLCHILDREN:重绘所有子窗口。
- RDW_UPDATENOW:立即更新窗口,而不是在下一个画图周期。
- 等等。
函数返回值:
- 如果函数成功,则返回非零值;如果失败,则返回零。
使用示例:
CWnd* pWnd = GetDlgItem(IDC_YOUR_DIALOG_ITEM);
pWnd->RedrawWindow();
这样会标记整个窗口为无效,并立即请求重绘。根据需要,可以通过设置不同的标志来调整重绘的行为。
转载请注明出处:http://www.zyzy.cn/article/detail/23372/MFC/CWnd