begin process at 2008 07 09 05:40:51
1 207 200 membres
46 nouveaux aujourd'hui
14 130 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Manette de jeu et visual basic 2005 [ Divers / General ] (sidne_II)

Manette de jeu et visual basic 2005 le 17/06/2007 18:53:31

sidne_II
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.


Si quelqu'un peut m'aider

Merci d'avance

Amigalement

http://amigamaquette.free.fr




Re : Manette de jeu et visual basic 2005 le 17/06/2007 19:01:52

casy
Membre Club

Je sens qu'il va flloir mettre un système de réponses automatiques pour ce genre de question.

Une petite recherche sur le forum, t'aurais appris que l'on doit y répondre en gors 2 à 3 fois par semaines.

Il y a un problème de type de variable entre .Net et les api win32.

Tous ce qui est de type Long dans les api, il faut le déclarer comme Interger dans .Net

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : Manette de jeu et visual basic 2005 le 17/06/2007 19:13:30

sidne_II
Merci pour cette réponse dépassant  la vitesse de celle de la réponse automatique

J'ai effectué une recherche un peu partout mais toutes les solutions que j'ai trouvées ne s'applique qu' à VB  6

Mais je suis certainement un peu obtu ,car même en remplaçant long par integer  il me renvoie toujours le même message  que je ne comprends pas

Si quelqu'un peut m'aider je lui en serai reconnaissant

Amigalement 

Re : Manette de jeu et visual basic 2005 le 17/06/2007 21:39:06

akim77

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.

@+


Re : Manette de jeu et visual basic 2005 le 17/06/2007 21:50:53

sidne_II
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

Merci encore pour vos réponses

Amigalement




Re : Manette de jeu et visual basic 2005 le 17/06/2007 22:19:45

casy
Membre Club
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 #    [ Lien ]

Re : Manette de jeu et visual basic 2005 le 17/06/2007 22:44:49

casy
Membre Club
Réponse acceptée !

Essaye peut-etre avec ceci :

   Declare Function joyGetPos Lib "winmm.dll" (ByVal uJoyID As Integer, ByRef pji As JOYINFO) As Integer

il n'y a plus l'erreur, mais je sais pas si les infos passent quand même, j'ia pas de joystick pour vérifier

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : Manette de jeu et visual basic 2005 le 17/06/2007 23:00:35

sidne_II
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

Amigalement

http://amigamaquette.free.fr

Re : Manette de jeu et visual basic 2005 le 17/06/2007 23:10:10

casy
Membre Club

Ok, c'est tout simplement une erreur de déclaration

Je confirme en regardant la déclaration pour VB6, que c'est bien ByRef qu'il faut mettre.


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : Manette de jeu et visual basic 2005 le 18/06/2007 09:23:55

Julien237
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...


Julien.


[Page 1 Page 2]
Classé sous : public, long, signature, manette, joygetpos

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS