Convention d'appel de DLL incorrecte (erreur 49) [Résolu]

cracos30 81 Messages postés vendredi 17 avril 2009Date d'inscription 12 avril 2013 Dernière intervention - 21 juil. 2009 à 12:22 - Dernière réponse : cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention
- 21 juil. 2009 à 14:05
Salut les Forthommes,
Je barbotte, je cherche une bouée, voilà l'anguille : (Je cherche à différencier un clic d'un double clic)
Public Declare Function GetTickCount Lib "Kernel32" () As Long
Public Declare Function GetDoubleClickTime Lib "User32" (Optional Cancel As Boolean) As Long
Public bDblClick As Boolean

Et puis :
Public Sub Image1_Click()

   Dim T As Long
   Dim A As Long
   T = GetTickCount
   A = GetDoubleClickTime 
   Do: DoEvents
   Loop While GetTickCount - T < A 'GetDoubleClickTime
   If Not bDblClick Then
   MsgBox "Simple clic sur l'image"
      Else
      bDblClick = False
End If

End Sub

Public Sub Image1_DblClick()

   MsgBox "Double-clic sur l'image"
   bDblClick = True

End Sub

Ca se plante à : "A = GetDoubleClickTime", avec l'erreur : "Convention d'appel de DLL incorrecte (erreur 49)".
Y aurait il un pédago, pour instruire un Bazu ?
D'avance MERCI!
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 21 juil. 2009 à 14:05
3
Merci
La définition des appels aux APIs n'est pas modifiable, elle est imposée.

Oui, "réponse acceptée" permet de voir une coche verte en face de la question afin d'aiguiller les membres qui chercheraient une réponse à une question identique.

Pour détecter un Double-Clic :
- Ajoute un Timer à ta forme et appelle-le tmrClick
- Ajoute un bouton nommé Button1 (pour l'exemple)
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
        If Not tmrClick.Enabled Then
            ' Le Timer se déclenchera en fin de période, s'il n'a pas été stoppé 
            ' par un second click
            tmrClick.Interval = GetDoubleClickTime
            tmrClick.Enabled = True
        Else
            tmrClick.Enabled = False
            ' Le clic a lieu dans les temps
            Debug.Print("Double-Clic")
        End If
    End Sub

    Private Sub tmrClick_Tick(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles tmrClick.Tick
        ' Annule la tempo d'attente d'un second click
        tmrClick.Enabled = False
        Debug.Print("Simple Clic")
    End Sub


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 21 juil. 2009 à 12:33
0
Merci
Salut
Rappel : Les définitions d'APIs sont faites pour du 32bits.
En VB.Net, 32bits = Short, pas Long

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 21 juil. 2009 à 12:36
0
Merci
+ Ta définition d'API est fausse :
D'où sort ce "Cancel" ?

Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long
Commenter la réponse de cs_Jack
cracos30 81 Messages postés vendredi 17 avril 2009Date d'inscription 12 avril 2013 Dernière intervention - 21 juil. 2009 à 13:05
0
Merci
Merci à vous!
C'est le Cancel qui était en cause, je pensait avoir compris l'Optional, ben non.
Par contre je part 2 fois sur le clic, quand je double clic. Je cherche, à moins que vous ayez
une idée. Question bête, nouveau sur le forum, quand on a la réponse à son problème doit on cliquer " Réponse acceptée " ?
Merci.
Commenter la réponse de cracos30
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 21 juil. 2009 à 14:05
0
Merci
oui, pour le "reponse acceptée"

pour ta declaration, pas top.

enregistre le temps du dernier click. Si inferieur au DoubleClickTime => DblClick
sinon, simple click.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield

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.