Supportnet / Forum / Anwendungen(Java,C++...)
c++: methode einer klasse als callback-funktion?
Frage
weiß jemand, wie ich eine methode einer klasse (eine objekt existiert) als window-callback-funktion angeben kann. ich krieg da immer einen compiler-fehler (vc6), mit dem ich nix anfangen kann:
error C2440: '=' : 'long (__stdcall CDebuginfo::*)(struct HWND__ *,unsigned int,unsigned int,long)' kann nicht in 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' konvertiert werden
Es gibt keinen Kontext, in dem diese Konvertierung moeglich ist
Antwort 1 von RiGo
Wenn ich sowas mache, arbeite ich mit typedef ...
typedef long (FAR PASCAL *FP_OpenPageSetup)(HINSTANCE , HWND , char *);
Aber ich weiss nicht, ob man Methoden von Objekten direkt angeben kann. Vor allem: Auf welche Instanz des Objekts bezieht sich die Methode im Augenblick des Aufrufs?
Ich würde empfehlen, eine Objektreferenz in die Userdaten des Fensters aufzunehmen. Dann kannst Du in der Callbackfunktion auf das Objekt und die Methoden zurückgreifen.
Richie.
typedef long (FAR PASCAL *FP_OpenPageSetup)(HINSTANCE , HWND , char *);
Aber ich weiss nicht, ob man Methoden von Objekten direkt angeben kann. Vor allem: Auf welche Instanz des Objekts bezieht sich die Methode im Augenblick des Aufrufs?
Ich würde empfehlen, eine Objektreferenz in die Userdaten des Fensters aufzunehmen. Dann kannst Du in der Callbackfunktion auf das Objekt und die Methoden zurückgreifen.
Richie.
Antwort 2 von semi
Schau Dir das hier an http://www.relisoft.com/book/win/2control.html
Dort wird die Callback-Funktion als eine friend-Funktion der Klasse definiert.
Dort wird die Callback-Funktion als eine friend-Funktion der Klasse definiert.