> Tjo. Har nu aldrig syntes pointers principelt var komplicerede (selvom jeg
> dog har set nogle konstuktioner som indeholdt en snedig udnyttelse)
> Jeg har overvejet hvorledes man mest effektivt (og elegant) kan propagere
> Timer event'en til det rette Timer objekt, så den kan rejse en normal VB
> event. Men det var nok mest elegant med en DLL
Det er i hvert fald det nemmeste. I hvert fald kommer du ikke uden om et
modul i koden, da du ikke kan lave en addressof til en funktion eller sub i
en klasse. Det du kan gøre er at lave en funktion i et modul som modtager
alle WM_TIMER beskederne. Når disse modtages skal de sendes tilbage til den
form, hvor klassen med timeren er oprettet. Det kan gøres ved at du med
SetProp gemmer en pointer til formen. Da hWnd vil pege tilbage på formen,
som timeren er styret fra, vil du derfor med GetProp kunne læse pointeren og
med et lille trick få en reference tilbage til formen:
Dim frm As Object
CopyData frm, GetProp(hWnd,"ObjPtr",4), 4
frm.TimerProc()
CopyData frm, 0&, 4
Det er naturligvis stadig lidt rodet, men det virker. Igen kommer jeg
tilbage til, at eneste "elegante" måde er at lave en DLL eller
oprette/slette timeren automatisk.
Og du har helt ret. Pointers er i sig selv ikke noget problem, men jeg har
flere gange tidligee forsøgt at hjælpe folk i dette og andre forums, hvor
jeg brugte dage på at forklare dem noget, som de bare opgav fordi de ikke
havde kendskab til noget, som ligger lidt uden for VB. Pointers er ikke
noget man sådan normalt støder på i VB, så derfor den overfladiske kommentar
:)
Hilsen Kim Pedersen
http://www.vbcodemagician.dk