C++ 带SPI的系统参数SINFOA#u GETMOUSE返回0';s
我试图获得我的鼠标速度,但当我使用参数C++ 带SPI的系统参数SINFOA#u GETMOUSE返回0';s,c++,windows,winapi,mouse,getsystemmetrics,C++,Windows,Winapi,Mouse,Getsystemmetrics,我试图获得我的鼠标速度,但当我使用参数SPI_GETMOUSE调用函数时,它将目标数组设置为{0,0,0},我认为这是不应该发生的 示例代码: int IntArr[3]; SystemParametersInfoA(SPI_GETMOUSE, 0, &IntArr, 0); 我试图改变我的鼠标灵敏度(从控制面板),但也没有成功 这个函数应该返回那些零还是我的错 检索两个鼠标阈值和鼠标加速度 起初我确实认为这两个鼠标阈值与我的鼠标光标灵敏度有关 在对搜索进行深入搜索后,我发现在 当应用
SPI_GETMOUSE
调用函数时,它将目标数组设置为{0,0,0}
,我认为这是不应该发生的
示例代码:
int IntArr[3];
SystemParametersInfoA(SPI_GETMOUSE, 0, &IntArr, 0);
我试图改变我的鼠标灵敏度(从控制面板),但也没有成功
这个函数应该返回那些零还是我的错
检索两个鼠标阈值和鼠标加速度
起初我确实认为这两个鼠标阈值与我的鼠标光标灵敏度有关
在对搜索进行深入搜索后,我发现在
当应用加速度时,系统对指定的鼠标相对运动应用两个测试。如果沿x轴或y轴的指定距离大于第一个鼠标阈值,且鼠标加速级别不为零,则操作系统将使距离加倍。如果沿x轴或y轴的指定距离大于第二个鼠标阈值,且鼠标加速级别等于2,则操作系统将使应用第一个阈值测试所产生的距离加倍。因此,操作系统可以将相对指定的鼠标沿x轴或y轴的运动乘以最多四倍
这基本上意味着我在目标数组中得到的这3个值与灵敏度无关,而是这2个鼠标阈值,0或1表示它打开或关闭,我的被禁用,这就是为什么我得到了全零。
为了获得鼠标灵敏度,您必须将函数与
SPI\u GETMOUSESPEED
参数一起用作。我假设您确实在调用systemparameters info
而不是GetSystemMetrics
。@JonathanPotter是的,您是正确的。很抱歉,我会修复它,复制粘贴时我的错误:DIssystemparameters sinfoa()的返回值
returning FALSE?如果是,那么GetLastError()
会报告什么?你是如何准确地打印阵列的?请提供一个。@RemyLebeau它返回TRUE,我在if语句中有它来测试aginst 0,如果它的0,我打印出GetLastError,但它返回TRUE,这就是我感到困惑的原因。我正在打印数组的每个元素,但这不是重点,我用调试器和内存查看器对它进行了测试,它确实是0。@JonathanPotter我敢打赌第二个