【问题标题】:Make the windows cursor bigger on windows 8在 windows 8 上使 windows 光标变大
【发布时间】:2014-06-09 09:56:30
【问题描述】:

我想让窗口光标变大。我有一个 c++ windows 应用程序,其中包含我从类似问题中劫持的以下代码。我正在从 .cur 文件加载光标。

已经试过这个链接:The biggest size of Windows Cursor 无法决定答案是“不可能”还是“可能”。

我已经尝试过了,它在 Windows 8 上工作 --> 我正在加载一个 128x128 的文件,但它看起来仍然非常小 (32x32)。任何人都可以发布一些对他们真正有用的东西吗?

// load cursor resource into hCursor
HCURSOR ghTouchCursor = (HCURSOR)LoadImage(NULL, L"NormalHand.cur", IMAGE_CURSOR, 0,0, LR_LOADFROMFILE);
// must copy cursor, windows is a pita...
HCURSOR ghCopyTouchCursor = CopyCursor(ghTouchCursor);
// set the cursor as the new full-screen cursor
SetSystemCursor(ghCopyTouchCursor, 32512);

我也试过这样调用加载图像,没有区别。

HCURSOR ghTouchCursor = (HCURSOR)LoadImage(NULL, L"NormalHand.cur", IMAGE_CURSOR, 128,128, LR_LOADFROMFILE);

GetSystemMetrics(SM_CXCURSOR) 返回 32 但根据官方网站: "SetSystemCursor...你可以使用这个函数来设置任意大小的光标。"

似乎围绕“不可能”达成了共识。

【问题讨论】:

  • GetSystemMetrics(SM_CXCURSOR) 的输出是什么?这是系统可以使用的光标宽度。 From msdn “光标的宽度,以像素为单位。系统无法创建其他大小的光标。”.
  • @FilipRoséen-refp 回答了问题。

标签: c++ windows-8.1


【解决方案1】:

最大光标大小取决于系统

系统支持的光标大小(以像素为单位)可以通过调用GetSystemMetrics来检索,用SM_CXCURSOR调用宽度SM_CYCURSOR调用高度。

msdn 所述,这是系统在创建游标时可以使用的唯一大小,这意味着如果您在调用 @987654322 时使用更大的大小@ 将被忽略。


任何替代解决方案?

如果您想要一个更大的光标,但系统阻止您创建一个,另一种方法是隐藏当前光标,并在光标实际位置周围浮动一个图像。

这样用户会认为光标发生了变化,但实际上光标是不可见的,并且已经在其位置设置了图像。

【讨论】:

  • @sehe 讽刺:已禁用。这是一个绝妙的主意,它引入了一系列我一直试图避免的全新问题。如果有人好奇这些问题是什么,我谦虚地提供一个链接。我已经批准了这个答案,所以我们都同意大于 32 的游标实际上是不可能的,除非有人有任何新信息未包含在帖子中。 stackoverflow.com/questions/23719372/... 以及 stackoverflow.com/questions/1343112/... –
【解决方案2】:

我知道这个问题是针对 Windows 8 的,但是这个问题在 2021 年仍然会出现,并且在 Windows 10 中很有可能使用大光标。

LoadImage 的宽度和高度参数的最新文档 (here) 指出:

图标或光标的宽度,以像素为单位。如果此参数为零且 fuLoad 参数为 LR_DEFAULTSIZE,则该函数使用 SM_CXICON 或 SM_CXCURSOR 系统度量值来设置宽度。如果此参数为零且未使用 LR_DEFAULTSIZE,则函数使用实际资源宽度。

因此,如果您为宽度和高度传入 0,而 不要 传入 LR_DEFAULTSIZE,它将使用资源的大小。因此,如果您的光标中有一个 64x64 的图像,即使系统指针是 32x32,它也会以该尺寸显示。

例子:

HCURSOR custom_cursor = (HCURSOR)LoadImage(hInstance, MAKEINTRESOURCE(IDC_CURSOR1), IMAGE_CURSOR, 0, 0, 0);
SetCursor(custom_cursor);

另外,这也尊重 Windows 中的“轻松访问”设置,因此如果用户将默认光标设置为更大,则光标会增大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2011-02-09
    相关资源
    最近更新 更多