Traduction du C++ vers VB

zgezou Messages postés 12 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 13 septembre 2005 - 30 juin 2005 à 14:26
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 1 juil. 2005 à 17:41
Bonjour,
je suis nouveau en programmation et j'aimerais savoir comment traduire du C++ en VB. En fait j'ai besoin d'utiliser des fonctions se trouvant dans une dll et je possède les déclarations de ces fonctions en C++.
Ma fonction est la suivante :


cdCAPI CDEnterReleaseControl(
unsigned long hSource,
cdReleaseEventCallBackFunction* pFunc,
unsigned long Context
);


Le type cdReleaseEventCallBackFunction est déclaré ainsi :


typedef unsigned long cdReleaseEventCallBackFunction (
unsigned long EventId
const void * pData
unsigned long DataSize
unsigned long Context
)


J'ai essayé de traduire ceci par:


Declare Function CDEnterReleaseControl Lib "CDSDK.dll" _
(ByVal hCam As Long, ByRef pFunc As Any, ByVal Context As Long) As Long


et

Type cdReleaseEventCallbackFunction
EventID As Long
pData As Long
DataSize As Long
Context As Long
End Type


mais cela ne fonctionne pas. Ca me marque une erreur du type : L'instruction à "0x77f4b2ab" eemploie l'adresse mémoire "0x02781fb4". La mémoire ne peut être "read".


Quelqu'un pourrait-il m'aider ???
Je vous en remercie d'avance.

Zgezou

3 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
30 juin 2005 à 15:55
Il faut sans doute que tu alloue de la mémoire à l'adresse stockée dans pData : utilise l'API windows GlobalAlloc.

Par ailleur tu peut remplacer le byref pfunc as any par byval pfunc as long et utiliser le mot clef AddressOf de VB pour passer l'adresse de ta fonction de CallBack.

Flachy Joe
0
zgezou Messages postés 12 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 13 septembre 2005 1
1 juil. 2005 à 10:02
Merci Flachy Joe, je vais essayer.

Zgezou
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
1 juil. 2005 à 17:41
salut,



le prb c'est que le pointeur de fonction est cdecl et pas stdcall donc
plantage forcement.... sauf si autres paramètres de compilation....



voir mon prochain tuto...sur les pointeurs de fonction...

ShareVB
0
Rejoignez-nous