c - 如何在 Win32 中为整个屏幕着色纯色

标签 c winapi background-color

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

这是我之前的尝试,但什么也没做。明确地说,我正在尝试将整个屏幕着色为纯色。

最佳答案

此代码使用 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 也是如此。另一种选择是在您可以用来绘图的所有内容之上放置一个全屏窗口。

关于c - 如何在 Win32 中为整个屏幕着色纯色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434328/

相关文章:

c - 长度已知的数组术语 C/C++

c - C 中的分层链接

c - 将多维可变长度数组传递给函数

c++ - 无法从挂起进程的单独线程中读取管道

C++/Win32 如何创建一个煮蛋定时器

javascript - 根据 child 高度调整背景颜色

css - Internet Explorer 8,向左浮动删除背景色

c - 未使用 sscanf 正确存储来自 fgets 的输入

c++ - 使用 GetOpenFileName() 限制目录

html - border-radius + background-color == 裁剪边框