Re: Callback in VC++ für einen VB6-Client

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hi Sebastian,

"Sebastian Lange" <SebastianLange@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:738C66E6-CA9E-42CC-A221-541B2E85186B@xxxxxxxxxxxxxxxx
Die Frage betrifft sowohl VC++ als auch VB6, da ich aber doppelte
Postings selbst nicht leiden kann versuche ich mein Glück einfach hier.

Ich habe eine DLL die ich in VC++ 6 entwickle
und einen Testclienten der von mir in VB6 entwickelt wird.
Nun möchte ich in die DLL ein Callback-Verfahren implementieren
und genau da hakt es. Wenn ich das Verfahren ohne Parameter für
die Callback-Funktion implementiere geht (augenscheinlich) alles gut.
Das ganze sieht dann so aus:


// C++ Bereich der DLL
typedef long (*DUMYCALLBACK)(); // Funktionszeiger ohne Parameter

Dein Callback muss auch __stdcall nutzen. Ohne Parameter fällt der Unterschied nicht auf.

typedef long (__stdcall *DUMMYCALLBACK)(); // Funktionszeiger ohne Parameter
typedef long (__stdcall *DUMMYCALLBACK2)(long mitParam); // Funktionszeiger mit Parameter

'''' VB Client '''
Public Declare Function CallbackTest Lib "MyLib.dll" (ByVal lAdress As Long)
As Long

'Der Aufruf an die DLL
Private Sub Command1_Click()
CallbackTest AddressOf MyClientVBFunction
End Sub

'' Diese Funktion wird von der DLL als Callback zurückgerufen
'' Kein Parameter
Public Function MyClientVBFunction() As Long
Debug.Print "MyClientVBFunction as callback from the DLL called"
End Function

Falls es trotzdem nicht geht, dann würde ich Deine Callback-Funktion mal in ein bas-Modul auslagern. Ich weiß nicht, ob Member-Funktionen von Klassen und Formularen beim AdressOf identische Funktionszeiger erzeugen, wie eine globale Funktion aus einem bas.

--
SvenC

.



Relevant Pages

  • =?Utf-8?Q?Callback_in_VC++_f=C3=BCr_einen_VB6-C?= =?Utf-8?Q?lient?=
    ... Ich habe eine DLL die ich in VC++ 6 entwickle ... Public Declare Function CallbackTest Lib "MyLib.dll" (ByVal lAdress As Long) ...
    (microsoft.public.de.vc)
  • =?Utf-8?Q?Re:_Callback_in_VC++_f=C3=BCr_einen_V?= =?Utf-8?Q?B6-Client?=
    ... Nein es handelt sich nicht um eine COM/ ActiveX DLL aber danke fürs Posting. ... Public Declare Function CallbackTest Lib "MyLib.dll" (ByVal lAdress As ... Public Function MyClientVBFunctionAs Long ...
    (microsoft.public.de.vc)
  • Re: Callback in VC++ für einen VB6-Client
    ... Ich habe eine DLL die ich in VC++ 6 entwickle ... Public Declare Function CallbackTest Lib "MyLib.dll" (ByVal lAdress As ... Public Function MyClientVBFunctionAs Long ...
    (microsoft.public.de.vc)
  • Re: DLL in Unterverzeichnis
    ... dass wohl die DLL von weiteren DLL's in dem Verzeichnis abhängig ist. ... Private Declare Function DllFunction Lib "dllname.dll" As Long ... Debug.Print DllFunction' Aufruf einer Funktion der Fremd-Dll ...
    (microsoft.public.de.vb)
  • Re: Late binding von DLLs in VB
    ... Solange ist es egal, ob die DLL ... Public Declare Function qAbout Lib "CAQ.DLL" As Integer ... ByVal hLibModule As Long _ ...
    (microsoft.public.de.vb)