sidne_II
Messages postés4Date d'inscriptiondimanche 13 mai 2007StatutMembreDernière intervention17 juin 2007
-
17 juin 2007 à 18:53
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
18 juin 2007 à 09:37
Bonsoir
Je n'arrive pas à utiliser l'API pour lire le joystick avec la foncion joyGetPos (0, manette_info)
Public Structure JOYINFO
Public wXpos As Long
Public wYpos As Long
Public wZpos As Long
Public wButtons As Long
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'rem
Dim Erreur_retour As Long
Dim manette_info As JOYINFO
Erreur_retour = joyGetPos(0, manette_info)
End Sub
Voila le message d'erreur à l'execution
Un appel à la fonction PInvoke 'Joypad Le test!WindowsApplication1.Module1::joyGetPos' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
cs_akim77
Messages postés73Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention17 septembre 20084 17 juin 2007 à 21:39
Salut,
Après les modifications préconisées par Casy, ton code doit resembler à çà:
Declare Function joyGetPos Lib "winmm.dll" ( _
ByVal uJoyID As Integer, ByRef pji As JOYINFO) As Integer
Type JOYINFO
wXpos As Integer
wYpos As Integer
wZpos As Integer
wButtons As Integer
End Type
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'rem
Dim Erreur_retour As Integer
Dim manette_info As JOYINFO
Erreur_retour = joyGetPos(0, manette_info)
End Sub
Sinon montre nous ton code complet.
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
sidne_II
Messages postés4Date d'inscriptiondimanche 13 mai 2007StatutMembreDernière intervention17 juin 2007 17 juin 2007 à 21:50
Merci pour votre aide voici le code aprés la modif
Public Class Form1
Public Structure JOYINFO
Public wXpos As Integer
Public wYpos As Integer
Public wZpos As Integer
Public wButtons As Integer
End Structure
Dim manette_info As JOYINFO
Declare Function joyGetPos Lib "winmm.dll" (ByVal uJoyID As Integer, ByVal pji As JOYINFO) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'rem
Dim Erreur_retour As Integer
Erreur_retour = joyGetPos(0, manette_info)
End Sub
End Class
en rouge le message d'erreur à l'exécution
Un appel à la fonction PInvoke 'Joypad Le test!WindowsApplication1.Form1::joyGetPos' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
Je ne comprends pas la signification de ce message d'erreur
Si quelqu'un peut m'aider je lui en serais reconnaissant
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 17 juin 2007 à 22:19
Le problème viens certainement du passage de la structure à l'api.
Les structures .Net ne doivent pas etre stockées comme en vb6 probablement d'ou le désiquilibre de la pile lors de l'appel.
Pour l'instant je n'ai pas encore trouvé la solution. Peut-etre faut-il passer par un marshaling ?
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #
sidne_II
Messages postés4Date d'inscriptiondimanche 13 mai 2007StatutMembreDernière intervention17 juin 2007 17 juin 2007 à 23:00
Je viens de tester a priori cela fonctionne , j'ai branché une manette et les boutons sont bien détecté . A priori c'est bien dans le passage de la structure à l'API
Un grand merci
Je vais essayer de finaliser le code pour le mettre à disposition , mais j'ai encore du boulot
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 18 juin 2007 à 09:23
Cool j'avais jamais vu qu'on pouvait utiliser un joystick sans passer par DirectInput, c'est nettement plus simple à mettre en place comme ça, merci d'avoir posé ta question ...
Pense à accepter une réponse de Casy pour valider le topic...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 18 juin 2007 à 09:37
La gestion du joystick est compris de base dans tous les PC. Elle fait aprtie de la toute première norme des PC aux coté des 4 ports séries, des 3 ports parallèles, de la carte vidéo VGA, etc..... Elle existait déjà sous le tout premier Dos, il est logique que Windows l'implante.
Cependant l'API Windows ne doit etre probablemnt qu'une surcharge de ce qui existe au niveau bios. Il n'est, je pense, pas question de gerer des joysticks hyper évolués ou autres volants, ... juste le truc de base.
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #