Обновите область в окне перед рисованием текста - PullRequest
1 голос
/ 07 октября 2010

Я рисую текст в окне в сообщении WM_PAINT, есть ли способ обновить область окна перед рисованием новой строки текста, чтобы старый текст в том же месте был удален?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Вам необходимо вызвать InvalidateRect для окна с параметром bErase, установленным в TRUE, чтобы оно само стиралось до генерирования WM_PAINT.

Это часто требуетсякогда окно является статическим текстовым элементом управления, поскольку они не стираются автоматически при изменении их значения.

Убедитесь, что ваше окно правильно обрабатывает WM_ERASEBKGND , а класс окна - нетиметь фоновую кисть NULL, так как это механизм, используемый InvalidateRect для стирания.

0 голосов
/ 15 ноября 2010
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); 
0 голосов
/ 07 октября 2010

Вы можете просто FillRect сначала над старым текстом ...

...