Заставить Windows перерисовать весь экран - PullRequest
3 голосов
/ 13 июля 2010

В настоящее время я рисую графику с помощью GDI, но мне нужно перерисовать весь рабочий стол / экран. Моя графика рисуется на экране, но когда я перемещаю нарисованный пиксель, он становится линией, потому что я не перерисовываю экран (ну, а окна нет) Мне нужно что-то, чтобы заставить его перерисовать весь экран, я попробовал следующие подходы:

UpdateWindow(GetDesktopWindow() );

InvalidateRect( GetDesktopWindow(), NULL, TRUE );

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

Кажется, ни один из них не работает, мне просто нужно перерисовать весь экран.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2013

Если вы все еще хотите принудительно перекрасить весь рабочий стол, вы можете использовать

RECT rect;
::GetClientRect(::GetDesktopWindow(), &rect);
::RedrawWindow(::GetDesktopWindow(), &rect, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);
1 голос
/ 15 августа 2012

Вы можете использовать RedrawWindow с hWnd, установленным в NULL.

1 голос
/ 13 июля 2010

Лучшим способом может быть сохранение предыдущего состояния / цвета пикселя и его восстановление при перемещении пикселя. Перерисовка всего экрана - это слишком много усилий и трата ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...