如何以编程方式配置鼠标增强指针精度

rap*_*tor 3 c++ mouse configuration winapi

如何在C++中以编程方式配置鼠标增强指针精度?我知道有一些有用的命令,如SystemParametersInfo,速度,...

int x = 15;
Run Code Online (Sandbox Code Playgroud)

SystemParametersInfo(SPI_SETMOUSESPEED,NULL,reinterpret_cast(x),SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

...但我找不到提高精度----

Cod*_*ray 7

根据该功能的文档SystemParametersInfoSPI_SETMOUSE:

设置两个鼠标阈值和鼠标加速度.该pvParam参数必须指向一个指定这些值的三个整数数组.有关详细信息,请参阅mouse_event.

因此,您需要一个包含3个值的数组,并pvParam在调用时指定该数组的指针作为参数SystemParametersInfo.

由于您所关心的只是改变加速度(最后一个值),您可能希望保留前两个的当前值,即鼠标阈值.通过SystemParametersInfo使用SPI_GETMOUSE标志调用来获取这些值,然后修改最后一个(加速),然后SystemParametersInfo再次调用,这次使用SPI_SETMOUSE标志.

示例代码(没有建议的错误检查):

// Turns mouse acceleration on/off by calling the SystemParametersInfo function.
// When mouseAccel is TRUE, mouse acceleration is turned on; FALSE for off.
void SetMouseAcceleration(BOOL mouseAccel)
{
    int mouseParams[3];

    // Get the current values.
    SystemParametersInfo(SPI_GETMOUSE, 0, mouseParams, 0);

    // Modify the acceleration value as directed.
    mouseParams[2] = mouseAccel;

    // Update the system setting.
    SystemParametersInfo(SPI_SETMOUSE, 0, mouseParams, SPIF_SENDCHANGE);
}
Run Code Online (Sandbox Code Playgroud)

你可能已经知道了这一点,但是有太多表现糟糕的应用程序,我不提及它以防万一.如果您在应用程序中执行此操作,请务必保存原始值,以便在应用程序关闭时还原它!当您修改系统范围的设置时,这只是基本礼仪.