begin process at 2008 07 06 03:14:07
1 205 441 membres
21 nouveaux aujourd'hui
14 119 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 : Erreur sur la fonction "GetCaretPos" [ Windows / API ] (Mrreivax)

Erreur sur la fonction "GetCaretPos" le 04/11/2006 00:02:52

Mrreivax

Quan j'exécute le code ci-dessous, il y a une erreur au niveau de GetCaretPos(xyPOS)...
Je pige pas pourquoi, il me dit:
"Un appel à la fonction PInvoke 'WindowsApplication1!WindowsApplication1.Form1::GetCaretPos' 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."


Public
Structure POINTAPI
       Dim x As Int32
       Dim y As Int32
EndStructure

PublicDeclareFunction GetCaretPos Lib"user32" (ByVal lpPoint As POINTAPI) AsLong

PrivateSub RichTextBox1_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
       Dim xyPOS As POINTAPI
       GetCaretPos(xyPOS) '<= Erreur... Why??
       Me.Text = xyPOS.x & " ; " & xyPOS.y
EndSubMais pourqoi??? Si quelqu'un a la réponse... Merci!!!

Xavier

Re : Erreur sur la fonction "GetCaretPos" le 04/11/2006 09:47:48

TMONOD
Réponse acceptée !

Salut,
La signature d'une fonction c'est :
- Le nombre de paramètres passés, leur type, leur ordre et leur mode (byref, byval))
- Le type de la valeur renvoyée en final.

Ton programme passe ta variable XYpos en paramètre et tu attend que cette fonction modifie ta variable pour que tu l'utilise par la suite, tu dois donc la passer byref  pour que l'api puisse la modifier.

BOOL GetCaretPos(

    LPPOINT  lpPoint  // address of structure to receive coordinates
   ); 

...tu vois c'est marqué dans win32.hlp , c'est que c'est vrai !!

A+

Jcbé[^]


Re : Erreur sur la fonction "GetCaretPos" le 04/11/2006 09:58:56

Julien237
Sinon en .Net, les anciens Long deviennent des Integer, donc tu dois aussi changer le type de retour de ta fonction en As Integer. Julien.

Re : Erreur sur la fonction "GetCaretPos" le 04/11/2006 10:56:51

Mrreivax
Réponse acceptée !
Merci TMONOD!
En effet!
Maintenant sa donne ceci!

Public

DeclareFunction GetCaretPos Lib"user32" (ByRef lpPoint As POINTAPI) AsIntegerEncore merci!!

Xavier

Re : Erreur sur la fonction "GetCaretPos" le 04/11/2006 11:50:27

TMONOD
De rien ce fut un plaisir !!

Jcbé[^]


Classé sous : fonction, erreur, signature, getcaretpos, xypos

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS