C++ GetCursorPos 总是 returns NULL
C++ GetCursorPos always returns NULL
我正在编写一个 MFC 程序,我想通过使用 HitTest()
来获取选定的树项。以下是我的部分代码:
POINT ptMouse;
GetCursorPos(&ptMouse);
TRACE("x = %f, y = %f\r\n", ptMouse.x, ptMouse.y);
TRACE("Error Code %s\r\n", GetLastError());
m_Tree.ScreenToClient(&ptMouse);
TRACE("x = %f, y = %f\r\n", ptMouse.x, ptMouse.y);
HTREEITEM hTreeSelected = m_Tree.HitTest(ptMouse, 0);
应该return一个点并将其映射到客户端window。但我得到的只是 NULL
。 TRACE
信息如下:
有没有人可以告诉我我做错了什么?
问题是 ptMouse.x
不是 float
!但是 %f
解析了一个 float
。将 %f
替换为 %d
,它应该打印出正确的值。
例如这个程序:
#include <Windows.h>
#include <cstdio>
int main() {
POINT p;
GetCursorPos(&p);
printf("\nx: %f\n", p.x);
printf("\nx: %d\n", p.x);
return 0;
}
给出这个输出:
x: 0.00000
x: 1325
当然是实际值1325
我正在编写一个 MFC 程序,我想通过使用 HitTest()
来获取选定的树项。以下是我的部分代码:
POINT ptMouse;
GetCursorPos(&ptMouse);
TRACE("x = %f, y = %f\r\n", ptMouse.x, ptMouse.y);
TRACE("Error Code %s\r\n", GetLastError());
m_Tree.ScreenToClient(&ptMouse);
TRACE("x = %f, y = %f\r\n", ptMouse.x, ptMouse.y);
HTREEITEM hTreeSelected = m_Tree.HitTest(ptMouse, 0);
应该return一个点并将其映射到客户端window。但我得到的只是 NULL
。 TRACE
信息如下:
有没有人可以告诉我我做错了什么?
问题是 ptMouse.x
不是 float
!但是 %f
解析了一个 float
。将 %f
替换为 %d
,它应该打印出正确的值。
例如这个程序:
#include <Windows.h>
#include <cstdio>
int main() {
POINT p;
GetCursorPos(&p);
printf("\nx: %f\n", p.x);
printf("\nx: %d\n", p.x);
return 0;
}
给出这个输出:
x: 0.00000
x: 1325
当然是实际值1325