强制窗口重绘整个屏幕

时间:2010-07-12 20:38:16

标签: windows gdi redraw

我目前正在使用GDI绘制图形,但我需要能够重绘整个桌面/屏幕。我的图形是在屏幕上绘制的,但是当我移动绘制的像素时,它将成为一条线,因为我没有重绘屏幕(窗户不是)。我需要一些东西来强制它重绘整个屏幕,我尝试了以下方法:

UpdateWindow(GetDesktopWindow() );

InvalidateRect( GetDesktopWindow(), NULL, TRUE );

SendMessage( GetDesktopWindow(), WM_PAINT, NULL, NULL );

它们似乎都不起作用,我只需要整个屏幕重绘。

3 个答案:

答案 0 :(得分:2)

如果您仍想强制重新绘制整个桌面,可以使用

RECT rect;
::GetClientRect(::GetDesktopWindow(), &rect);
::RedrawWindow(::GetDesktopWindow(), &rect, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);

答案 1 :(得分:1)

最好的方法可能是保存先前的像素状态/颜色,并在移动像素时将其恢复。重新绘制整个屏幕似乎太费力了,而且浪费了大量的资源。

答案 2 :(得分:1)

您可以在hWnd设置为NULL的情况下使用RedrawWindow