设置系统光标大小

时间:2019-03-11 09:18:41

标签: c++ windows winapi windows-10

是否可以将系统光标大小设置为超过32px x 32px?

当前,我正在使用此代码设置光标。

#define OEMRESOURCE
#include <windows.h>
#include <chrono>
#include <thread>

int main()
{
    //Load cursor
    const HCURSOR customCursor = LoadCursorFromFile(L"Cursor.cur");

    //Replace system cursor with loaded cursor
    SetSystemCursor(customCursor, OCR_NORMAL);

    //Sleep the current thread to allow the user to play with new cursor
    std::this_thread::sleep_for(std::chrono::milliseconds(5000));

    //Restore original system cursors
    SystemParametersInfo(SPI_SETCURSORS, 0, nullptr, 0);
}

但是,即使光标文件的大小大于32px x 32px,也不会缩小光标。

另一个question建议使用LoadImage

但是,使用直线

const HCURSOR customCursor = static_cast<HCURSOR>(LoadImage(nullptr, L"Cursor.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE));
所建议的

似乎没有什么不同。尝试手动设置尺寸,例如

const HCURSOR customCursor = static_cast<HCURSOR>(LoadImage(nullptr, L"Cursor.cur", IMAGE_CURSOR, 80, 80, LR_LOADFROMFILE));

影响光标的质量,但不影响其大小。

有人有什么建议吗?


我当前正在系统上运行Windows 10

1 个答案:

答案 0 :(得分:-1)

break

设置系统光标大小 回答:如果系统支持,您可以将大小设置为任何值。 是否可以将系统光标大小设置为32px x 32px以上? 回答:测试上面提到的代码 如果输出为32,则表示您不能超过游标的大小 对于某些显示器,它可能会为您提供更大的数字,因此在那些屏幕上,您可以将光标大小设置得更大。 所以理想的方法是检查SM_CYCURSOR SM_CXCURSOR不管游标的大小是多少 从文件

加载相同大小的光标

nWidth和nHeight参数必须指定当前显示驱动程序支持的宽度和高度,因为系统无法创建其他大小的游标。要确定显示器支持的宽度和高度驱动程序,使用GetSystemMetrics函数,指定SM_CXCURSOR或SM_CYCURSOR值。

在关闭之前,应用程序必须调用DestroyCursor函数以释放与游标关联的所有系统资源。

代码尝试在具有不同显示驱动器的不同机器上尝试此操作。chnage32至64

#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")

void main()
{
   int fResult;


   fResult = GetSystemMetrics(SM_CYCURSOR); 
}