2010-10-10 13 views
3

Comment faire pour configurer la précision du pointeur améliorer la souris par programmation en C++? Je sais qui ont des commandes utiles comme SystemParametersInfo, pour la vitesse, ...Comment faire pour configurer la précision du pointeur de la souris par programmation

int x = 15; 

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

... mais je ne peux pas trouver améliorer la précision ----

Répondre

1

« Améliorer la précision du pointeur » est une option d'accélération de marche/arrêt. Le paramètre SPI_SETMOUSE pour SystemParametersInfo ajustera ce paramètre.

Je ne peux pas vous dire exactement comment les valeurs d'accélération sont affectées, mais si vous SPI_GETMOUSE et affichez les valeurs avec le réglage on et off, vous le trouverez.

1

This discussion a un peu plus d'informations. Il a une macro qui semble faire ce que vous cherchez. Il devrait être assez simple de convertir en C++; c'est juste quelques appels DLL.

7

Selon the documentation pour la fonction SystemParametersInfo et SPI_SETMOUSE:

Définit les deux valeurs de seuil de la souris et de l'accélération de la souris. Le paramètre pvParam doit pointer vers un tableau de trois entiers qui spécifie ces valeurs. Voir mouse_event pour plus d'informations.

Vous avez donc besoin d'un tableau contenant 3 valeurs, et que vous spécifiez un pointeur sur ce tableau comme paramètre pvParam lors de l'appel SystemParametersInfo. Comme tout ce qui vous intéresse est de changer l'accélération (la dernière valeur), vous voulez probablement conserver les valeurs actuelles pour les deux premières valeurs de seuil de la souris. Pour ce faire, appelez le SystemParametersInfo avec le drapeau SPI_GETMOUSE pour obtenir ces valeurs, puis modifiez le dernier (l'accélération), puis appelez SystemParametersInfo à nouveau, cette fois avec le drapeau SPI_SETMOUSE.

Exemple de code (sans vérification d'erreur recommandé):

// 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); 
} 

Et vous le savez probablement déjà, mais il y a trop d'applications mal comportés là-bas pour moi de ne pas en parler au cas où. Si vous faites cela dans votre application, assurez-vous de sauvegarder la valeur d'origine afin de pouvoir la restaurer lorsque votre application est fermée! Ceci est juste l'étiquette de base lorsque vous modifiez les paramètres à l'échelle du système.

+0

Quelqu'un a-t-il vérifié si le réglage des valeurs de seuil fait une différence? J'ai essayé de les modifier et je ne remarque aucun changement dans la façon dont le curseur bouge. – GetFree