zgezou
Messages postés12Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention13 septembre 2005
-
30 juin 2005 à 14:26
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 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.
Flachy Joe
Messages postés2101Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention 7 novembre 20221 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.