3

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

UpdateWindow(GetDesktopWindow() );

InvalidateRect( GetDesktopWindow(), NULL, TRUE );

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

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

4

3 回答 3

2

If you still want to force entire desktop to be repainted, you may use

RECT rect;
::GetClientRect(::GetDesktopWindow(), &rect);
::RedrawWindow(::GetDesktopWindow(), &rect, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);
于 2013-04-12T07:08:33.867 回答
1

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

于 2010-07-12T20:44:31.360 回答
1

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

于 2012-08-15T07:14:50.067 回答