为什么执行以下程序后鼠标速度没有变化?
是由于 SPI_SETMOUSESPEED 还是由于无法通过 SPIF_UPDATEINIFILE , SPIF_SENDCHANGE 更改 winini 文件, SPIF_SENDCHANGE 参数?
编译器: g ++ ,操作系统: Windows 8 。
#include <iostream>
#include <windows.h>
#include<winuser.h>
#pragma comment(lib, "user32.lib")
using namespace std ;
int main()
{
int i = 0 , *MouseSpeed = &i ;
bool x ;
// Retrieving the mouse speed .
x = SystemParametersInfo( SPI_GETMOUSESPEED , 0 , MouseSpeed , 0 ) ;
cout<<"\n\nPrevious Mouse Speed was : " << *MouseSpeed ;
cout<<"\n\nSystemParametersInfo return status for SPI_GETMOUSESPEED : " << x ;
if( x )
{
i = 20 ;
MouseSpeed = &i ;
// Changing the mouse speed .
SystemParametersInfo( SPI_SETMOUSESPEED ,
0 ,
MouseSpeed ,
SPIF_UPDATEINIFILE ||
SPIF_SENDCHANGE ||
SPIF_SENDWININICHANGE ) ;
cout<<"\n\nCurrent Mouse Speed is : " << *MouseSpeed ;
cout<<"\n\nSystemParametersInfo return status for SPI_SETMOUSESPEED : " << x << "\n\n" ;
}
if( !x )
cout<< "Error Status : " << GetLastError() << "\n\n";
return 0;
}
答案 0 :(得分:5)
您为pvParam
传递的错误值为SPI_SETMOUSESPEED
。来自documentation:
设置当前鼠标速度。 pvParam参数是一个整数 介于1(最慢)和20(最快)之间。值10是默认值。 通常使用鼠标控制面板应用程序设置此值。
将其与SPI_GETMOUSESPEED
检索当前鼠标速度。鼠标速度决定了多远 指针将根据鼠标移动的距离移动。该 pvParam参数必须指向一个整数,它接收的值介于1(最慢)和20(最快)之间。值10是 默认。最终用户可以使用鼠标设置该值 控制面板应用程序或使用的应用程序 SPI_SETMOUSESPEED。
因此,对于SPI_GETMOUSESPEED
,您必须将int*
值传递为pvParam
,但对于SPI_SETMOUSESPEED
,您必须传递int
值。在这两种情况下,您都传递int*
。您对SPI_SETMOUSESPED
的致电应该是:
SystemParametersInfo( SPI_SETMOUSESPEED ,
0 ,
(LPVOID)i,
SPIF_UPDATEINIFILE ||
SPIF_SENDCHANGE ||
SPIF_SENDWININICHANGE ) ;