【发布时间】:2012-08-20 00:39:24
【问题描述】:
我正在尝试在 Win32 表单中模拟鼠标光标。在每个WM_MOUSEMOVE 我都有
hCursor = LoadCursor(NULL, IDC_ARROW);
////Get device context
hDeviceContext = GetDC(hwnd);
hDCMem = CreateCompatibleDC(hDeviceContext);
hBitmap = CreateCompatibleBitmap(hDCMem, 50, 50);
hbmOld = SelectObject(hDCMem, hBitmap);
DrawIcon(hDCMem, x, y, hCursor);
SelectObject(hDCMem, hbmOld);
但我没有看到任何被绘制的东西。但是,如果我直接在 DC 上画:
DrawIcon(hDeviceContext, x, y, hCursor);
我确实看到了光标,但是当我移动光标时它并没有擦除图像,留下一条长尾巴。
【问题讨论】:
-
很好奇,你为什么要模拟光标而不是让 Windows 为你绘制?
-
我正在开发一个使用高清鼠标的实验性应用程序。我想将鼠标设置为较高的报告 dpi,比如 5000,但在屏幕上的响应与 400 dpi 的普通鼠标相同。
-
有趣,我添加了一个可能值得考虑的替代方法的答案。
标签: winapi gdi mouse-cursor