Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 896 fois - Téléchargée 29 fois
' Objets à créer : ' ================ ' Une feuille Form1 + Label1 + Timer1 ' Un module Module1 ' Dans Form1 : ' ============ Private Sub Form_Load() Form1.Caption = "Columbiad Software - Contrôleur de jeu" Form1.BackColor = vbWhite Form1.ScaleMode = vbPixels Form1.AutoRedraw = True Form1.Cls Form1.AutoRedraw = False Timer1.Interval = 10 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Static C As Long Manette.dwSize = 64 Manette.dwFlags = JOY_RETURN_ALL Call joyGetPosEx(0, Manette) ' Envoi toutes les informations du contrôleur n°0 dans "Manette" 'Call joyGetPosEx(1, Manette) ' Envoi toutes les informations du contrôleur n°1 dans "Manette" 'Call joyGetPosEx(2, Manette) ' Envoi toutes les informations du contrôleur n°2 dans "Manette" '.... Form1.Cls Form1.AutoRedraw = True ' Affichage des boutons : Form1.FillStyle = vbFSSolid Form1.DrawMode = vbCopyPen For i% = 0 To 15 ' Teste chaque bouton If (Manette.dwButtons And (2 ^ i%)) > 0 Then C = vbGreen ' bouton appuyé Else C = vbRed ' bouton relaché End If Form1.FillColor = C: Form1.Circle (10 + 10 * i%, 10), 5, C Next i ' Affichage des axes: Form1.DrawMode = vbMaskNotPen Form1.FillStyle = vbFSSolid ' Axe 1 (violet) : C = RGB(0, 255, 0): Form1.FillColor = C Form1.Circle (10 + Manette.dwXpos, 30 + Manette.dwYpos), 3, C ' Axe 2 (bleu ciel) : C = RGB(255, 0, 0): Form1.FillColor = C Form1.Circle (10 + Manette.dwRpos, 30 + Manette.dwZpos), 3, C ' Axe 3 (jaune) : C = RGB(0, 0, 255): Form1.FillColor = C Form1.Circle (10 + Manette.dwUpos, 30 + Manette.dwVpos), 3, C Form1.AutoRedraw = False Form1.FillStyle = vbFSTransparent Form1.DrawMode = vbXorPen Form1.Circle (10 + Manette.dwXpos, 30 + Manette.dwYpos), 5, QBColor(15) Form1.Circle (10 + Manette.dwRpos, 30 + Manette.dwZpos), 5, QBColor(15) Form1.Circle (10 + Manette.dwUpos, 30 + Manette.dwVpos), 5, QBColor(15) Label1.Caption = _ "Xpos =" + Str$(Manette.dwXpos) + vbLf _ + "Ypos =" + Str$(Manette.dwYpos) + vbLf _ + "Zpos =" + Str$(Manette.dwZpos) + vbLf _ + "Rpos =" + Str$(Manette.dwRpos) + vbLf _ + "Upos =" + Str$(Manette.dwUpos) + vbLf _ + "Vpos =" + Str$(Manette.dwVpos) + vbLf _ + "'Point de vue' =" + Str$(Manette.dwPOV) + vbLf _ + "qté boutons appuyés =" + Str$(Manette.dwButtonNumber) + vbLf _ + "état boutons =" + Str$(Manette.dwButtons) End Sub ' Dans Module1 : ' ============= Declare Function joyGetPosEx Lib "winmm.dll" (ByVal uJoyID As Long, pji As Type_JoyInfoEx) As Long Public Const JOY_RETURN_ALL = &HFFF Type Type_JoyInfoEx dwSize As Long ' taille de la structure dwFlags As Long ' flags to indicate what to return dwXpos As Long ' x position dwYpos As Long ' y position dwZpos As Long ' z position dwRpos As Long ' rudder/4th axis position dwUpos As Long ' 5th axis position dwVpos As Long ' 6th axis position dwButtons As Long ' etats des bouttons dwButtonNumber As Long ' numero du bouton presse actuellement dwPOV As Long ' point of view state dwReserved1 As Long ' reserved for communication between winmm driver dwReserved2 As Long ' reserved for future expansion End Type Public Manette As Type_JoyInfoEx
For i% = 0 To 30
' Teste chaque bouton
If (Manette.dwButtons And (2 ^ i%)) > 0 Then
C = vbGreen ' bouton appuyé
Text1.Text = Manette.dwButtons ' renvoi le nbs calculé (on peut ensuite faire un routine qui pour chaque calcul unique renvoi un numéro de bouton choisi)
Else
C = vbRed ' bouton relaché
End If
En modifiant un poil ta source je fait bien apparaitre mes 30 boutons qui s'allume en vert lorsque j'appuie dessus. Je souhaitera pouvoir recuperer le numero du bouton sur lequel j'appuie. Peux tu m'aider stp
Simple, sobre et efficace !
Donc mille mercis.
jean-pierre
En ce qui concerne les pads PSX, tout dépend de l'adaptateur utilisé ...
génial, c'est exactement ce que je recherchais, t'as bien assuré...
je vais pouvoir me mettre a faire mon soft de controle de l'ordi par une manette (souris + kk fonctions clavier)
parce que je bosse 8h / jour a la souris, et mon dos il commence a se desequilibrer lol donc la au moins mes deux mains seront au meme niveau!!!
De plus ca marche impec avec les pads PSX, ecoute pas les aigris LOL
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.