1


0

テキストを描画する前にウィンドウの領域を更新します

私はWM_PAINTメッセージでウィンドウにテキストを描画していますが、同じ場所にある古いテキストが消去されるように新しいテキスト行を描画する前にそのウィンドウ領域を更新する方法はありますか?

3 回答


1


bErase`パラメータを TRUE`に設定してウィンドウを消去するには、http://msdn.microsoft.com/en-us/library/dd145002(VS.85).aspx [InvalidateRect]を呼び出す必要があります。 WM_PAINTが生成される前のそれ自体。

これは、ウィンドウが静的なテキストコントロールである場合にしばしば必要になります。値を変更しても自動的に消去されないためです。

ウィンドウがhttp://msdn.microsoft.com/en-us/library/ms648055(v=VS.85).aspx[WM_ERASEBKGND]を適切に処理しており、ウィンドウクラスにNULLバックグラウンドブラシがないことを確認してください。これは、InvalidateRectが消去を行うために使用するメカニズムです。


0


最初に古いテキストをhttp://msdn.microsoft.com/en-us/library/dd162719%28VS.85%29.aspx[FillRect]で上書きできます…​


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);