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。但我得到的只是 NULLTRACE信息如下:

有没有人可以告诉我我做错了什么?

问题是 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