MFC Invalidate
时间: 2023-11-16 11:56:59 浏览: 224
MFC中的Invalidate函数是用于使视图无效并请求重绘的函数。当视图需要更新时,可以调用Invalidate函数来通知系统需要重绘该视图。该函数可以接受一个布尔值参数bErase,用于指定是否在重绘前擦除视图的背景。如果bErase为TRUE,则在重绘前会擦除视图的背景;如果bErase为FALSE,则不会擦除背景。Invalidate函数通常与OnPaint和OnDraw函数一起使用,以实现视图的绘制和更新。
相关问题
MFC中invalidate函数
在MFC中,`Invalidate`函数用于将指定的客户区域标记为无效,并请求Windows重新绘制该区域。当应用程序需要更新窗口的显示内容时,可以调用该函数。具体来说,`Invalidate`函数会向Windows发送一个`WM_PAINT`消息,Windows在收到该消息后会调用窗口的绘制函数进行重绘。
`Invalidate`函数有多种重载形式,常用的形式如下:
```cpp
void Invalidate(BOOL bErase = TRUE);
void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
```
其中,`Invalidate`函数默认会标记整个客户区域为无效,并请求进行擦除操作。如果`bErase`参数为`FALSE`,则不进行擦除操作。`InvalidateRect`函数可以指定一个矩形区域进行无效标记,`InvalidateRgn`函数可以指定一个区域对象进行无效标记。在调用这些函数后,Windows会在适当的时候调用窗口的绘制函数进行重绘。
Mfc中invalidate怎么用
在 MFC 中,Invalidate 函数用于使当前窗口失效,强制重新绘制窗口。一般情况下,当你需要更新窗口的显示内容时,可以调用 Invalidate 函数来触发窗口的重绘。下面是该函数的使用方法:
```
void Invalidate(
BOOL bErase = TRUE
);
```
其中,bErase 参数表示是否擦除原来的内容。如果设置为 TRUE ,则在重绘窗口前会先擦除原来的内容;如果设置为 FALSE ,则不会擦除原来的内容,而是直接在原来的内容上进行重绘。
以下是一个简单的示例:
```
// 声明一个 CWnd 类的成员变量 m_wnd,表示你要更新的窗口
// 在需要更新窗口的地方调用以下代码
m_wnd.Invalidate(FALSE); // 不擦除原来的内容,直接重绘
```
在窗口失效后,系统会自动调用窗口的 OnPaint 函数进行重绘。你需要在 OnPaint 函数中实现窗口的绘制逻辑,以更新窗口的显示内容。
阅读全文