我正在使用此代码在当前鼠标位置获取对象/窗口的Device Context
(又称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
。
提前致谢。
答案 0 :(得分:3)
你通常不会一遍又一遍地检索一堆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;
}