CWnd::RedrawWindow 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个公共方法,用于请求窗口重绘。该方法会导致窗口区域被标记为无效,并触发相应的重绘操作。

函数原型如下:
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.pingtaimeng.com/article/detail/23372/MFC/CWnd