Page 1 sur 1

Valeur MOUSE_WHEEL qui ne bouge pas

Posté : mer. 27 nov. 2019 12:35
par littlechiki
Bonjour,
J'ai un problème concernant ce code
#include <Misc.au3>
#include <WinAPI.au3>
Global $wheel
While 1
   If _IsPressed(01) Then; Si on appuie sur le clic gauche, on montre la valeur $wheel puis on ferme
      MsgBox(0,"",$wheel)
      Exit
   EndIf
   Switch GUIGetMsg()
      Case $MOUSE_WHEEL_UP
         If $wheel <= 3 Then
            $wheel += 1
         EndIf
      Case $MOUSE_WHEEL_DOWN
         $wheel = 0
   EndSwitch
WEnd
En fait je me demandais pourquoi ma valeur $wheel ne bouge pas malgré le fait que je bouge la molette de la souris.
Je ne comprend pas du tout et si quelqu'un pouvait m'aider, je lui serait grandement reconnaissant. Sur ce merci pour vos réponses !

Re: Valeur qui ne bouge pas

Posté : mer. 27 nov. 2019 18:37
par walkson
Bonjour,
GUIGetMsg() ne renvoie pas $MOUSE_WHEEL_UP ou $MOUSE_WHEEL_DOWN. Voir https://www.autoitscript.fr/autoit3/doc ... GetMsg.htm
Pour voir si la roulette a été tournée dans un sens ou dans l'autre, vous pouvez utiliser cette méthode récupérée sur un site russe dont j'ai oublié le nom de l'auteur (j'ai retrouvé AZJIO)
Global $k1=0
Global $k2=0
GUIRegisterMsg(0x020A , "WM_MOUSEWHEEL")
$Gui = GUICreate("Крути колесо мыши вниз / вверх",  370, 100)
GUICtrlCreateLabel('Функция WM_MOUSEWHEEL срабатывает в момент вращения колёсика мыши. Можно использовать для установки числовых параметров в инпутах c GUICtrlCreateUpdown.', 5, 5, 360, 50)
$Label1 = GUICtrlCreateLabel("колесо мыши сдвинулось вверх 0 раз", 10, 60, 226, 17)
$Label2 = GUICtrlCreateLabel("колесо мыши сдвинулось вниз 0 раз", 10, 80, 226, 17)
$Input=GUICtrlCreateInput("", 240, 65, 100, 21)
GUISetState ()

While 1
   $msg = GUIGetMsg()
   Select
      Case $msg = -3
         Exit
   EndSelect
WEnd

Func WM_MOUSEWHEEL($hWnd,$nMsg,$wParam,$lParam)
   #forceref $nMsg, $wParam, $lParam
   If $wParam=0x00780000 Then
      $k1+=1
      GUICtrlSetData($Label1, 'колесо мыши сдвинулось вверх '&$k1&' раз')
      WinSetTitle($Gui, '', 'вверх '&$k1&' раз, вниз '&$k2&' раз')
      GUICtrlSetData($Input, $k1&' - '&$k2&' = '&$k1-$k2)
   EndIf
   If $wParam=0xFF880000 Then
      $k2+=1
      GUICtrlSetData($Label2, 'колесо мыши сдвинулось вниз '&$k2&' раз')
      WinSetTitle($Gui, '', 'вверх '&$k1&' раз, вниз '&$k2&' раз')
      GUICtrlSetData($Input, $k1&' - '&$k2&' = '&$k1-$k2)
   EndIf
EndFunc
Facilement adaptable, je vous laisse le soin de traduire mais je pense que ce n'est pas nécessaire pour comprendre :P
Rmq: votre titre n'est vraiment pas terrible !! "Valeur MOUSE_WHEEL qui ne bouge pas" est quand même plus explicite....

Re: Valeur MOUSE_WHEEL qui ne bouge pas  

Posté : mer. 27 nov. 2019 20:06
par littlechiki
Merci pour ça ! Je vais quand même traduire mais c'est surtout par curiosité :lol: !
En effet mon titre était pas terrible mais j'ai eu beaucoup de mal à trouvé. Le voila changé. Je passe le sujet en résolu !