Zeigerproblem bzw. Callback



  • Hallo, ich habe ein Problem mit einer Callback Sub/ Function..

    Der Funktionsprototyp sieht wie folgt aus (vorgegeben aus einer DLL)

    Public Declare Function UUIRTSetReceiveCallback Lib "uuirtdrv.dll" _
         (ByVal hHandle As Long, ByVal pReceiveProc As Long, ByVal userData As Form) As Long
    

    Die Function spaeter rufe ich wie folgt auf:

    res = CBool(UUIRTSetReceiveCallback(hDrvHandle, AddressOf IRReceiveCallback, Me))
    

    Und hier die Sub:

    Public Sub IRReceiveCallback(ByVal IRCode As Long, ByVal userData As Long)
        PostMessageA(gHiddenWindow, WM_GOT_RECEIVE, 0, IRCode)
    End Sub
    

    Fehlermeldung lautet:
    Error 1 'AddressOf' expression cannot be converted to 'Long' because 'Long' is not a delegate type.

    Kann mir bitte jemand helfen!?



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Guck dir mal Marshal.GetFunctionPointerForDelegate an, damit müsste es gehen.
    Vorausgesetzt du verwendest das .NET Framework 2.x (Studio 2005) - mit 1.x (Studio 2003) wird das vermutlich haarig.

    Weiters solltest du statt Long wohl besser IntPtr verwenden.


Anmelden zum Antworten