Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带SPI的系统参数SINFOA#u GETMOUSE返回0';s_C++_Windows_Winapi_Mouse_Getsystemmetrics - Fatal编程技术网

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是的,您是正确的。很抱歉,我会修复它,复制粘贴时我的错误:DIs
systemparameters sinfoa()的返回值
returning FALSE?如果是,那么
GetLastError()
会报告什么?你是如何准确地打印阵列的?请提供一个。@RemyLebeau它返回TRUE,我在if语句中有它来测试aginst 0,如果它的0,我打印出GetLastError,但它返回TRUE,这就是我感到困惑的原因。我正在打印数组的每个元素,但这不是重点,我用调试器和内存查看器对它进行了测试,它确实是0。@JonathanPotter我敢打赌第二个