Comment passer le pointeur d'une structure de masm vers VB6?
OujdaMajid
Messages postés26Date d'inscriptiondimanche 27 octobre 2002StatutMembreDernière intervention 4 avril 2007
-
26 déc. 2005 à 14:49
BLUEBIBUBBLE
Messages postés116Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention10 avril 2013
-
7 janv. 2006 à 02:23
Bonjour tout le monde,
voilà, je suis occupé à developper un petit programme (masm et visual basic 6).
en masm, je developpe une dll en masm que je veux utiliser en VB(je prefere la develolpper en masm plutôt que c ou c++).
la dll en masm envoie un pointeur d'une structure vers vb , comme ceci :
...
demo proc hwnd:DWORD,
msg:DWORD,
wParam:DWORD,
lParam:DWORD
.....
; je recupre le pointeur de la structure qui se trouve en lParam (par exemple
; typedef struct {
; LPARAM lParam;
; WPARAM wParam;
; UINT message;
; HWND hwnd;
; } CWPSTRUCT;
alors le probléme est le suivant, en asm le pointeur lParam pointe bien sur un estructure "CWPSTRUCT" mais quand j'envoie le pointeur vers vb via l'API PostMessage je rerçois un pointeur erroné et quand je veux l'appliquer à une structure "CWPSTRUCT" en vb, vb se plante, donc ma question est la suivante :
pourquoi le pointeur pointe bien en masm et pas en vb.
est ce un probleme de placement de mémoire ou quoi...?
merci d'avance
BLUEBIBUBBLE
Messages postés116Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention10 avril 20131 7 janv. 2006 à 02:23
Une Fonction VB qui retourne une structure utilise en fait (de manière invisible en VB) le premier paramètre de la fonction pour transmettre l'addresse de la structure retournée . Il te faut recopier le contenu de la structure a l'addresse imposée par visual basic, voir:
http://www.asmfr.com/code.aspx?ID=18833