1
    RECT rect;
    HWND hwnd = GetDesktopWindow();
    LockWindowUpdate(hwnd);
    HDC hdc = GetDC(hwnd);
    HBRUSH hbrush = CreateSolidBrush(RGB(255,0,0));
    GetWindowRect(hwnd, &rect);
    FillRect(hdc, &rect, hbrush);         

这是我之前的尝试,什么也没做。为了清楚起见,我正在尝试将整个屏幕着色为纯色。

4

2 回答 2

2

此代码使用 GDI(您似乎正在使用)工作:

#include <windows.h>

int main() {
    HDC screenDC = GetDC(NULL); //NULL gets whole screen
    HBRUSH brush = CreateSolidBrush(RGB(255,0,0)); //create brush
    SelectObject(screenDC, brush); //select brush into DC
    Rectangle(screenDC, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)); //draw rectangle over whole screen
    //clean up stuff here
    return 0;
}

这只是一个例子,而不是一个强大的解决方案。例如,选择之前的刷回DC总是一个好主意。释放 DC 也是如此。另一种选择是在您可以用来绘制的所有内容之上放置一个全屏窗口。

于 2012-09-15T03:49:57.027 回答
1

创建一个全屏窗口(不仅最大化,而且覆盖多个显示器的整个工作区)并将其涂成白色。

这是其他全屏图形应用程序(游戏、屏幕保护程序等)所做的。

于 2012-09-17T08:50:42.303 回答