在绘制文本之前刷新窗口中的区域

时间:2010-10-07 19:02:08

标签: c windows gdi

我正在WM_PAINT消息的窗口上绘制文本,有没有办法在绘制新的文本行之前刷新该窗口区域,以便同一位置的旧文本被删除?

3 个答案:

答案 0 :(得分:1)

您需要为bErase参数设置为TRUE的窗口调用InvalidateRect,以便在生成WM_PAINT之前将其擦除。

当窗口是静态文本控件时,通常需要这样做,因为当您更改其值时,这些窗口不会自动擦除。

确保您的窗口正确处理WM_ERASEBKGND并且窗口类没有NULL背景画笔,因为这是InvalidateRect用于擦除的机制。

答案 1 :(得分:0)

你可以先对旧文本FillRect进行...

答案 2 :(得分:0)

HDC hdc = GetDC(NULL); //get windows handle whaterver if urs
HRGN hrgn;

 //get that specific region and repaint it by following line

hrgn = CreateRectRgn(10, 10, 100, 100);
SelectClipRgn(hDC, hrgn);
PaintDesktop(hDC);