我正在WM_PAINT消息的窗口上绘制文本,有没有办法在绘制新的文本行之前刷新该窗口区域,以便同一位置的旧文本被删除?
答案 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);