【发布时间】:2010-01-20 19:39:47
【问题描述】:
我有一个大小为 128x128 的光标,但是当我使用 LoadCursor 加载并显示它时,它只有 32x32。哪个API可以正确实现?似乎 MS 调整了它的大小。谢谢。
【问题讨论】:
我有一个大小为 128x128 的光标,但是当我使用 LoadCursor 加载并显示它时,它只有 32x32。哪个API可以正确实现?似乎 MS 调整了它的大小。谢谢。
【问题讨论】:
Windows XP 不包括任何大于 32x32 的系统光标。 (如果包含更大的游标,当标准 API 加载游标时,它们将被拉伸到 32x32。)
对于高 DPI 系统,Windows XP 已将 SM_CXCURSOR 和 SM_CYCURSOR 值调整为 64x64 像素。这种大小调整是为了防止鼠标指针因为太小而无法有效使用而虚拟消失。虽然系统的其他方面使用 DPI 进行缩放,但鼠标指针不缩放。 Microsoft 不会尝试为鼠标指针强制使用与 DPI 无关的大小。
系统还提供了 SetSystemCursor API 函数,您可以使用该函数来更改特定类别的系统光标。您可以使用此功能设置任意大小的光标。但是,您必须以编程方式调用该函数,并且只能使用它为特定类别设置游标。您不能使用它来使系统上的所有光标大小相同。
【讨论】:
不要使用 LoadCursor,而是使用 LoadImage()。
【讨论】:
SM_CXCURSOR by SM_CYCURSOR 是系统当前可以使用的唯一游标大小。
使用GetSystemMetrics 找出这些值。
【讨论】: