gpt4 book ai didi

c++ - GetDC(NULL) 获取主监视器或虚拟屏幕?

转载 作者:可可西里 更新时间:2023-11-01 16:36:27 26 4
gpt4 key购买 nike

环顾网络,我发现大多数人认为 GetDC(NULL) 将为整个主要 监视器(左上角为 0,0 的监视器)获取设备上下文。但是,我感觉大多数人只是这么说,因为 GetDC 的 msdn 页面可能就是这么说的。

但是,如果您查看以下两页(至少这两页),似乎在说 GetDC(NULL) 返回一个覆盖整个虚拟屏幕的设备上下文(包含每个连接到系统的显示器)。

(1) https://www.microsoft.com/msj/0697/monitor/monitor.aspx-> 在页面中搜索“This gets the RECT of the virtual desktop”并查看该语句周围的位(特别是其上方的 GetDC(NULL))。

(2) http://msdn.microsoft.com/en-gb/library/windows/desktop/dd162610%28v=vs.85%29.aspx-> 在页面中搜索“GetDC(NULL)”

我一直在努力弄清楚它到底是什么,但是大量相互矛盾的意见让我失望了。

有没有人对此有任何实际经验,并且可以在多显示器系统上进行测试? (我只有一台显示器,所以我不能。)

它是否获得覆盖整个主显示器的 DC 或覆盖整个虚拟屏幕的 DC?

编辑

对于任何想尝试的人来说,在我的系统上,如果我创建一个默认项目并将以下内容放入 WinMain 中,它就会使屏幕变黑。如果您有多个显示器并尝试了它,问题就变成了它是只让您的主显示器变黑还是让所有显示器变黑?

HDC hdc = GetDC(NULL);
RECT r = {LONG_MIN, LONG_MIN, LONG_MAX, LONG_MAX};
FillRect(hdc, &r, (HBRUSH)(COLOR_BTNTEXT + 1));
ReleaseDC(NULL, hdc);

最佳答案

它得到一个覆盖整个虚拟屏幕的 DC。我刚刚测试过:

#include <windows.h>
#include <conio.h>

int main() {

HDC screen = GetDC(NULL);

RECT r = {-1200, 100, -200, 500};
HBRUSH br = CreateSolidBrush(RGB(0, 255, 0));

FillRect(screen, &r, br);

getch();
InvalidateRect(NULL, &r, true);

return 0;
}

...它成功地在我的辅助屏幕上绘制了一个绿色矩形(位于主屏幕的左侧,因此它具有负 X 坐标)。

关于c++ - GetDC(NULL) 获取主监视器或虚拟屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com