gpt4 book ai didi

c++ - 为什么 GetDC 对同一个对象返回不同的值?

转载 作者:行者123 更新时间:2023-11-28 00:34:57 25 4
gpt4 key购买 nike

我正在使用此代码获取当前鼠标位置处的对象/窗口的设备上下文(也称为 DC)。

POINT curPos;

while (1)
{
GetCursorPos(&curPos);
printf("hdc: %ld\n", GetDC(WindowFromPoint(curPos)));
Sleep(300);
}

编译执行后,我将鼠标放在控制台上,不动,一直打印不同的值(也是负数)。例如:

hdc: -1795094423
hdc: -1425992173
hdc: 1090588133
hdc: 553717209
hdc: 1979782668
hdc: 2013337074
hdc: -1241444488

我知道我可以使用 GetWindowDC 获取特定窗口的 DC,但我想获取特定部分的 DC那个窗口。

提前致谢。

最佳答案

您通常不会在不释放其中任何一个的情况下一遍又一遍地检索一堆 HDC。在捕获另一个之前尝试释放它们,看看会发生什么。

无论如何,没有理由认为它们是相同的。事实上,按照您这样做的方式,在不释放它们的情况下,它们必须是不同的数字,因为每个数字都是不同对象的句柄。

至于数字是“负数”,那根本不重要。它们确实应该打印为十六进制。

#include <windows.h>
#include <stdio.h>

int main() {
POINT curPos;
while (1)
{
GetCursorPos(&curPos);
HWND hwnd = WindowFromPoint(curPos);
HDC hdc = GetDC(hwnd);
printf("hdc: %08lX\n", (unsigned long)hdc);
ReleaseDC(hwnd, hdc);
Sleep(1000);
}
return 0;
}

关于c++ - 为什么 GetDC 对同一个对象返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297616/

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