鼠标速度不改变使用spi_setmousspeed



为什么执行下列程序后鼠标速度没有变化?

是由于SPI_SETMOUSESPEED还是由于无法通过SPIF_UPDATEINIFILESPIF_SENDCHANGESPIF_SENDCHANGE参数更改winini文件?

编译器: 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<<"nnPrevious Mouse Speed was : " << *MouseSpeed ;
    cout<<"nnSystemParametersInfo 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<<"nnCurrent Mouse Speed is : " << *MouseSpeed ;
        cout<<"nnSystemParametersInfo return status for SPI_SETMOUSESPEED : " << x << "nn" ;
    }
    if( !x )        
        cout<< "Error Status : " << GetLastError() << "nn";
    return 0;
}

您将错误的值传递为SPI_SETMOUSESPEEDpvParam。来自文档:

设置当前鼠标速度。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) newMouseSpeed,
    SPIF_UPDATEINIFILE | SPIF_SENDCHANGE | SPIF_SENDWININICHANGE
);

最新更新