[vb] Dll functie aanroepen zoals in C++ voorbeeld

Pagina: 1
Acties:

  • rjsomeone
  • Registratie: Juli 2001
  • Laatst online: 20-11-2023

rjsomeone

a.k.a. Tuslsh

Topicstarter
Een heel klein stukje c+ code:

code:
1
funcIR_GetKeyCode = (int (__stdcall *)(int &))GetProcAddress(g_hLibIR, "IR_GetKeyCode");


Deze functie wordt later aangeroepen als volgt:
code:
1
int ret = funcIR_GetKeyCode(g_nIrCounter) & 0xff;


Die integer in de functie is dus By Reference ipv By Value.

In c++ werkt dit allemaal perfect, maar nu wil ik dit eigenlijk ook in VB doen.

Ik zat zo te denken aan
code:
1
Public Declare Function IR_GetKeyCode Lib "irremote.dll" (Varnaam as integer) As Integer

't probleem is alleen, dat ik dus niet de variabelenaam heb (ik noem 'm varnaam) en dat 't dan dus niet werkt.
Hoe krijg ik het nu in vb voorelkaar om die dll functie correct aan te roepen?

Hier had uw advertentie kunnen staan :).


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een C++ int is in VB een Long

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 24-08 18:20

johnwoo

3S-GTE

Visual Basic .NET:
1
2
Public Declare Function IR_GetKeyCode Lib "irremote.dll" _
   (ByRef Varnaam As Long) As Long

:Y)
Aangezien ByRef de default is in VB (ik geloof ook met DLL functies), was je code op de Integer -> Long na eigenlijk al goed. Toch is het verstandig om bij argumenten (met name bij DLL-functies) expliciet ByVal of ByRef te zetten. Scheelt een hoop verwarring :)

[edit] De bikkels onder ons kunnen ook in VB direct met pointers werken (zie hieronder), maar het is veel netter om ByRef te gebruiken :)
Visual Basic .NET:
1
2
3
4
Public Declare Function IR_GetKeyCode Lib "irremote.dll" _
   (ByVal lpVarnaam As Long) As Long

RetVal = IR_GetKeyCode(VarPtr(MijnVariabele))

[ Voor 94% gewijzigd door johnwoo op 28-01-2003 09:20 ]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1