2

我有一个大小为 128x128 的光标,但是当我使用 LoadCursor 加载并显示它时,它只有 32x32。哪个API可以正确实现?似乎 MS 调整了它的大小。谢谢。

4

3 回答 3

3

Windows XP 不包括任何大于 32x32 的系统游标。(如果包含更大的游标,当标准 API 加载游标时,它们将被拉伸到 32x32。)

对于高 DPI 系统,Windows XP 已将 SM_CXCURSOR 和 SM_CYCURSOR 值调整为 64x64 像素。这种大小调整是为了防止鼠标指针因为太小而无法有效使用而虚拟消失。虽然系统的其他方面使用 DPI 进行缩放,但鼠标指针不缩放。Microsoft 不会尝试为鼠标指针强制使用与 DPI 无关的大小。

系统还提供了 SetSystemCursor API 函数,您可以使用它来更改特定类别的系统光标。您可以使用此功能设置任意大小的光标。但是,您必须以编程方式调用该函数,并且只能使用它为特定类别设置游标。您不能使用它来使系统上的所有游标都具有相同的大小。

http://support.microsoft.com/kb/307213

于 2010-01-20T10:36:39.277 回答
2

不要使用 LoadCursor,而是使用 LoadImage()。

于 2010-01-20T11:39:47.477 回答
1

SM_CXCURSORbySM_CYCURSOR是系统当前可以使用的唯一光标大小。用于GetSystemMetrics找出这些值。

于 2010-01-20T10:36:20.277 回答