vinscoco
Messages postés8Date d'inscriptionmercredi 2 juillet 2003StatutMembreDernière intervention25 avril 2006
-
21 mars 2006 à 16:51
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 2012
-
24 avril 2008 à 22:48
bonjour,
je voudrais avoir quelques precision concernant une partie de code que je dois faire passer de VB6 a VB.Net.
dans un premier temps, voici les déclarations de fonctions de l'API que j'utilise.
Delegate
Function SubClassProcDelegate(
ByVal hwnd
As
Integer,
ByVal msg
As
Integer,
ByVal wParam
As
Integer,
ByVal lParam
As
Integer)
As
Integer
Public
Declare
Sub CopyMemory
Lib "kernel32"
Alias "RtlMoveMemory" (
ByRef lpvDest
As
Object,
ByRef lpvSource
As
Integer,
ByVal cbCopy
As
Integer)
Public
Declare
Function SetTimer
Lib "user32" (
ByVal hwnd
As
Integer,
ByVal nIDEvent
As
Integer,
ByVal uElapse
As
Integer,
ByVal lpTimerFunc
As SubClassProcDelegate)
As
Integer
voici la ligne de code qui semble ne pas fonctionner
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 21 mars 2006 à 19:37
Si tu travailles avec la version 2 de .net regarde dans la msdn la classe Timer dans le namespace System.Threading. Et oublis SetTimer.
Sinon domage :)
Tu l'utilises ou ton délégué ? tu peux mettre une partie de minuteurproc ?
Par contre pour CopyMemory il y a la classe Marshal qui permet de manipuler dans des espaces mémoires non managés.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 21 mars 2006 à 19:43
Arf j'ai parlé trop vite.
La classe Timer existe bien dans System.Threading je viens de tester. Suit cette voie plutot que d'utiliser SetTimer, il doit y avoir des exemples dans la msdn.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 21 mars 2006 à 17:15
La signature de SetTimer est incorrect.
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As IntPtr, ByVal nIDEvent As UIntPtr, ByVal uElapse As UInteger, ByVal lpTimerFunc As SubClassProcDelegate) As UIntPtr
Utilisation de SetTimer:
Dim TmrLong as UIntPtr
TmrLong = SetTimer(IntPtr.Zero, 0, CType(IntervalleSz, UIntPtr), AddressOf MinuteurProc)
Pour savoir si MinuteurProc est appelé tu peux mettre un point d'arrêt dans MinuteurProc.
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 24 avril 2008 à 22:48
Bonjour,
Pourriez vous m'expliquer le rôle et fonctionnement de "AddressOf" s'il vous plait ?
J'adapte un module en module de classe.
Dans le module il y a un AddressOf NomProc
Call SetWindowLong (mhWnd, GWL_WNDPROC, AddressOf WindowProc)
Je le copie dans mon module de classe et la ca ne marche plus =(
message d'erreur : Utilisation incorrecte de l'operateur AddressOf
En sachant que j'ai déclaré la fonction suivante plus bas dans le module de classe
Private Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long