bh2
Messages postés1Date d'inscriptionlundi 7 juillet 2003StatutMembreDernière intervention12 décembre 2005
-
12 déc. 2005 à 15:48
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 2016
-
15 déc. 2005 à 20:46
Bonjour,
Je migre une application de VB6.0 vers VB.Net. Cette application embarque un OCX écrit en C++. Dans cet OCX, j'ai une méthode qui prend un tableau d'entiers en argument.
long MaClasseCtrl::SetPalette(long NbC, long FAR* Palette)
{
// Je parcours mon tableau
for (long i=0; i<NbC;i++)
{
// mon opération ...
Palette++; // Je passe à l'emplacement mémoire suivant
}
}
Au niveau de mon appli VB6.0, j'appelais cette méthode en lui passant le premier élément du tableau (et tout allait bien) :
Dim Nb As Integer
Dim MonTableau(5) as Integer
' Je rempli mon tableau ...
Nb = 5
MonOCX.SetPalette 5,MonTableau(0)
Maintenant, avec le même code d'appel en VB.Net, et en mode debug dans Visual C++, j'ai pu observer qu'il récupère bien la première adresse mémoire, mais quand je passe à la suivante, il fait n'importe quoi.
De ce que j'ai pu lire, il faut écrire un wrapper qui marshale mon tableau managé en tableau non managé ; mais je ne vois pas très bien par où commencer.