为什么getDC返回同一对象的不同值
Why GetDC returns different values for the same object?
我正在使用此代码在当前鼠标位置获取对象/窗口的Device Context
(又称DC)。
POINT curPos;
while (1)
{
GetCursorPos(&curPos);
printf("hdc: %ldn", 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: %08lXn", (unsigned long)hdc);
ReleaseDC(hwnd, hdc);
Sleep(1000);
}
return 0;
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 为什么getDC返回同一对象的不同值