Callback Funktionen
-
Hi
Ich habe eine Dll welche zum Beispiel Meldungen an die Anwendung zurückgeben will.
Leider muss ich auf MFC verzichten da diese dll auch in anderen Projekten benutzt werden soll.Jetzt habe ich gehört dass man so was über sog. callback Funktionen löst.
Ich habe aber keine Ahnung wie!?
in der anwendung und Dll deklarieren ??
Aufruf??Danke für die Hilfe
-
Eine Callbackfunktion ist eine Funktion die von wo anders her aufgerufen wird.
Also machste dir eben einen Funktionspointer und übergibst diesen der DLL.
-
Ich stehe heut glaub irgendwie mit beiden Füßen auf dem Schlauch!
Wie übergebe ich einen Funktionpointer?
-
In dem du deiner Funktion mitteilst was sie erwarten wird.
typedef (void)(*fptr)(); BLAFASEL meine_Funktion(fptr ptr) { if(ptr) ptr(); }
-
Funktioniert fast aber beim Programmm ablauf stürzt das Programm nach dem aufruf der CallBack Funktion ab?!
in der Anwendung
typedef void(CKlasse::*Box)(char *test); typedef UINT (CALLBACK * DLLFUNKTION)(T_DLL_DATA st_data, Box pFunc); DLLFUNKTION DLLfunktion; if(m_DownloadDLL != NULL) { DLLfunktion = (DLLFUNKTION)GetProcAddress (m_DLL,"fn_Dllfunktion"); if(DLLfunktion != NULL) { Box pfunc; pfunc = CKlasse::BoxString; DLLfunktion (data,pfunc); } FreeLibrary(m_DLL); }in der DLL
typedef void(*FunctionReturn)(char *test); extern int WINAPI fn_Dllfunktion(T_DLL_DATA st_DllData, FunctionReturn testfunc) { FunctionReturn pFunc; pFunc = testfunc; pFunc("Hallo"); pFunc("Absturz"); }In der Box String wird nur
AfxMessageBox(string);aufgerufen
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
du rufst einen funktionspointer mit einem methodenpointer auf, das kann nicht funktionieren. zeig doch mal mehr code und versuche mal deine designidee besser zu beschreiben.
-
Also es funktioniert soweit alles!!
zur Erklärung!
Die Dll beschreibt einen Ablauf der etwas dauern kann. Deswegen muss sie Status Meldungen verschiedener Statuspunkte zurückliefern.
Das mit der CallBack Funktion funktioniert aber nur wenn ich meine Funktion in der Anwendung mit
static deklariere!Deswegen MFC weil ich dann keine this-Zeiger mehr verwenden kann sondern mir die Zeiger auf die Daten in der Applikation mit
afxGetapp()->...
holen mussAber Danke für die Hilfe an alle!!!
Gruß Raffzen