问题
在 Windows 上,为“鼠标按钮按下”事件返回的坐标对于 I-Beam 光标似乎略有错误。基本上,x 坐标总是比它应该在的位置左两个像素。
我写了一个非常简单的 win32 程序来演示这个问题。它所做的只是将光标变成 IBeam 并在最后一次鼠标按下事件所在的位置渲染一条垂直的红线。我希望红线与工字梁的垂直部分完全匹配,但事实并非如此。
如您所见,红线位于其应有位置左侧两个像素处(标准箭头指针的行为是正确的),因此 I-Beam 光标的热点似乎是错误的。
我已经让其他运行 Windows 7 64 位的人确认他们遇到了同样的问题,但是 Vista 上的另一个测试人员没有遇到这个问题。
关于我的环境的一些信息
相关代码
我的测试项目基本上是 Visual C++ 2010 中的“Win32 项目”模板,其更改概述如下。
这是我注册窗口类并将光标设置为 I Beam 的代码
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, …Run Code Online (Sandbox Code Playgroud)