Probléme passage vb6 vers vb Net

dieuzorro Messages postés 21 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 14 janvier 2008 - 24 avril 2007 à 20:42
dieuzorro Messages postés 21 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 14 janvier 2008 - 26 avril 2007 à 08:23
Bonjour,

J'ai une Dll codé en vb6 et un projet exemple en vb6 pour s'en servir. Je veut m'en servier en vb net. J'ai porté le projet vb6 vers vb net mais cela ne fonctionne pas. Le prbléme est avec une fonction qui fait un callback.

Code VB6
Déclaration du prototype de la fonction de la dll
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
PublicDeclareFunction SetProgressProc Lib"ISMBUS32.DLL"Alias"_SCDLG_SetProgressProc"(ByVal Pnt AsLong)AsLong
 

<!-- END TEMPLATE: bbcode_code -->
Appel de la fonction
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
Call SetProgressProc(AddressOf CallbackProc_Progress)

<!-- END TEMPLATE: bbcode_code -->
Fonction callback
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
Sub CallbackProc_Progress(ByVal Data AsDouble)
MainScreen.Progress.Caption = CStr(CInt(Data)) + " %"EndSub
 

<!-- END TEMPLATE: bbcode_code -->
Code En VB Dot Net
Déclaration du prototype de la fonction de la dll
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
PublicDelegateSub SetProgressProcDelegate(ByVal Pnt AsDouble)PublicDeclareFunction SetProgressProc Lib"ISMBUS32.DLL"Alias"_SCDLG_SetProgressProc"(ByVal Pnt As SetProgressProcDelegate)AsInteger
 

<!-- END TEMPLATE: bbcode_code -->
Appel de la fonction
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
Call SetProgressProc(AddressOf CallbackProc_Progress)

<!-- END TEMPLATE: bbcode_code -->
Fonction callback
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

 
Sub CallbackProc_Progress(ByVal Data AsDouble)
MainScreen.DefInstance.Progress.Text = CStr(CShort(Data)) & " %"EndSub
 

<!-- END TEMPLATE: bbcode_code -->
Merci d'avance pour vos réponce

<!-- / message -->

2 réponses

Jamesbound Messages postés 17 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 8 mai 2007
25 avril 2007 à 23:39
Vb.net travail avec les EventHandler, donc comme pour un click de souris, on revoit à un handler...


Pourquoi? Parce .Net n'utilise plus de poiteurs de mémoire, c'est le code managé. Il peut changer
de place à tout moment et donc plus facile pour le système d'exploitation à "nettoyer" la mémoire
après utilisation.


Maintenant c'est toujour possible de le faire, mais cela demande un bon learning curve comme disent
les anglais... Vas voir : http://www.codeproject.com/csharp/Win32_to_NET.asp (c'est en C++) mais
bon, c'est au moins un départ...

Si non, pour la stabilité de ton logiciel, réécris cette damnée DLL de VB6 en dotnet!

James Bound
Programeur anlyste senior
0
dieuzorro Messages postés 21 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 14 janvier 2008
26 avril 2007 à 08:23
Ok merci pour ta réponce!
0
Rejoignez-nous