Est-il possible de faire des pointeurs de fonction en VB ? [VB] - Programmation
Marsh Posté le 20-10-2001 à 20:09:05
Tout a fait possible, avec le mot clé "AdressOf", voici un exemple qui permet de creer un timer (plus précis que celui de VB mais plus critique) :
' dans un module
' l'api
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
' Notre fonction callback, nous utiliserons adressof pour le paramettre lpTimerFunc de l'api (pointeur sur fonction)
Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
' mettre son code
end sub
' dans le form
Private sub Form_Load()
' On utilise un pointeur sur fonction en 4 eme paramettre pour l'API
SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc
End sub
Si tu veux utiliser des pointeurs tout court, tu peux utiliser VarPtr, StrPtr et ObjPtr. J'ai trouvé une petite finte pour les utiliser qui consiste a copier le contenu du pointeur vers une variable avec "RtlMoveMemory" (plus connu sous le nom de CopyMemory).
Marsh Posté le 21-10-2001 à 11:01:50
Et pour faire un tableau de pointeurs de fonction ?
(En fait C ça que je veux faire)
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
Marsh Posté le 21-10-2001 à 19:51:56
C'est théoriquement impossible, mais j'ai vu sur www.mvps.org, un article tres interessant (et tres chaud) permettant d'utiliser ce qu'on appel les vecteurs (amateur du C++ .
Leur exemple permettait d'ajouter, supprimer un pointeur dans ce vecteur, ce qui revient a un :
vector <PROPVECT> gs_PropsIn; // Propvect = renvoye pointeur sur struct
gs_PropsIn.push_back ( le pointeur );
L'idée est d'implémenter cette méthode du C++ à VB ... bon courage !
Marsh Posté le 21-10-2001 à 21:04:23
Ce que tu peux faire en VB est définir une interface (clase de base) qui définit une méthode puis des interfaces qui en hérite en spécialisant la méthode (=tes fonctions) et enfin une collection d'objets interface de base (que tu instancies avec des classes de spécialisation).
[edtdd]--Message édité par Verdoux--[/edtdd]
Marsh Posté le 23-10-2001 à 20:02:32
KarLKoX a écrit a écrit : C'est théoriquement impossible, mais j'ai vu sur www.mvps.org, un article tres interessant (et tres chaud) permettant d'utiliser ce qu'on appel les vecteurs (amateur du C++ . Leur exemple permettait d'ajouter, supprimer un pointeur dans ce vecteur, ce qui revient a un : vector <PROPVECT> gs_PropsIn; // Propvect = renvoye pointeur sur struct gs_PropsIn.push_back ( le pointeur ); L'idée est d'implémenter cette méthode du C++ à VB ... bon courage ! |
Moi je fais des tableau de pointeurs de fonction en C sans pb !!!
Marsh Posté le 23-10-2001 à 20:03:46
Verdoux a écrit a écrit : Ce que tu peux faire en VB est définir une interface (clase de base) qui définit une méthode puis des interfaces qui en hérite en spécialisant la méthode (=tes fonctions) et enfin une collection d'objets interface de base (que tu instancies avec des classes de spécialisation). |
Non C pas ça !!!
Marsh Posté le 23-10-2001 à 20:40:19
Et bien pourquoi ne ferais tu pas une DLL qui exporterais ta méthode en C, méthode que tu appelerais depuis VB ? Ca peut etre une solution.
Marsh Posté le 23-10-2001 à 20:47:48
C pas possible car C pour un script (pas VB script script pour bot sur DC)....
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
Marsh Posté le 26-10-2001 à 22:58:40
Up
Marsh Posté le 19-10-2001 à 23:57:36
Est-il possible de faire des pointeurs de fonction en VB ???
Et si oui comment on fait ???
(VB Delphi )
---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love: