小编Ger*_*502的帖子

Windows 7 中 I-Beam 光标的热点不正确?

问题

在 Windows 上,为“鼠标按钮按下”事件返回的坐标对于 I-Beam 光标似乎略有错误。基本上,x 坐标总是比它应该在的位置左两个像素。

我写了一个非常简单的 win32 程序来演示这个问题。它所做的只是将光标变成 IBeam 并在最后一次鼠标按下事件所在的位置渲染一条垂直的红线。我希望红线与工字梁的垂直部分完全匹配,但事实并非如此。

这是发生的事情的屏幕截图

如您所见,红线位于其应有位置左侧两个像素处(标准箭头指针的行为是正确的),因此 I-Beam 光标的热点似乎是错误的。

我已经让其他运行 Windows 7 64 位的人确认他们遇到了同样的问题,但是 Vista 上的另一个测试人员没有遇到这个问题。


关于我的环境的一些信息

  • Windows 7 64 位。完全默认配置(即没有 DPI 缩放,没有奇怪的主题等)
  • Visual Studio Express 2010
  • 带有最新驱动程序的 NVidia 显卡 (v270.61)
  • 打开或关闭空气动力没有区别。在显示首选项中选择不同的光标没有区别

相关代码

我的测试项目基本上是 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)

windows user-interface winapi windows-7 mouse-pointer

6
推荐指数
1
解决办法
1250
查看次数