Callback Funktion
-
ahoi leute !
tja, was is das genau und wofuer braucht man das ?
hab in der FAQ nachgeguckt, die suchfunktion beansprucht, gegoogelt und in anderen foren nachgeblaettert.das problem dabei is weniger etwas zu finden, sondern ne klare antwort zubekommen. hab da schon mehrere verschiedene antworten darauf gefunden.
ist ne callback "nur" eine funktion, die halt ne andere funktion als argument besitzt ? war die haeufigste antwort.
kann mir das vielleicht irgendjemand mal verklickern ? irgendwie sehe ich da nicht wirklich nen nutzen darin.
bin in letzter zeit immer wieder auf beschreibungen gestossen, wo drinnen steht, das man fuer jenes und dieses ne callback-funktion braucht. deshalb moechte ich es mal ganz genau wissen
Deadman
-
Eine Callback-Funktion dient dazu, bestimmte, vom Programmierer vorgegebene, Aktionen durchzuführen. Das Besondere an einer Callback-Funktion ist, dass sie so eingerichtet wird, dass sie automatisch aufgerufen wird, wenn ein bestimmtes GUI-Ereignis eintritt (beispielsweise wenn eine Schaltfläche angeklickt oder ein Menübefehl ausgewählt wird).
-
A callback is a mechanism through which an application is notified of events outside the application. The callback function is a function in the application that is called by Windows to inform the application that a message has arrived for it. NOTE: A developer who creates a function can choose to make it a callback function. Functions defined in an API have already been defined to be (or not be) callback functions, and must be used accordingly. http://labs.google.com/glossary?q=callback%20function
Das ist eine Verwendung von callback Funktionen, die auch bf schon beschrieben hat. Also kurz gesagt: So eine Callback-Funktion wird nicht von dir, nicht von deinem Programm, sondern von außerhalb aufgerufen. Zum Beispiel von Windows, um dir mitzuteilen, dass etwas passiert ist.
-
hmm
oki doki, hab ich das nun richtig verstanden ? ich setze zum bleistift ein bmp auf meine form, und wenn die maus z.b. ueber die grafik faehrt, dann kann ich mir von windows anzeigen lassen das das so is ? in dem windows mir auf die form schreibt: "Maus ueber grafik" ?? wenn ja, wie kann man das dann implementieren ? woher soll windows wissen welche funktion es fuer die textausgabe verwenden soll ?
irgendwie steh ich voll auf der leitung
Deadman
-
ui, bist ganz schön durcheinander
-
jo, kaffee-entzug
-
Original erstellt von Deadman:
wenn ja, wie kann man das dann implementieren ? woher soll windows wissen welche funktion es fuer die textausgabe verwenden soll ?Indem Du Windows mit einem speziellen API-Aufruf (meist sowas wie SetCallback) die Adresse der Funktion mitteilst, die aufgerufen werden soll.
-
mist und ich hab keinen kaffee da...
kann mir irgendjemand das mal mittels nem beispiel verklickern ? oder was natuerlich besser waere, gibts von irgendjemanden vielleicht ein tutorial, wo das beschrieben und erklaert wird ?
ich durchschau das system ueberhaupt nicht. vielleicht bin ich ja schon an mein geistiges ende gekommen.
langsam komm ich mir echt doof vor
Deadman
-
Da steht drin wie es implementiert ist:
http://www.c-plusplus.net/titelanzeige.php?ISBN=3826629841
-
primitives Beispiel ohne Sinn:
class Int //eine klasse die sich wie ein int verhält { ... divZero myDivZeroHandler; public: typedef void (*divZero)(int); setDivZeroHandler(divZero func) { myDivZeroHandler=func; } }; //irgendwo anders void foo(int i) { cout<<"wollte "<<i<<" durch 0 teilen - Fehler\n"; } //jetzt irgendwo im code: Int i; i.setDivZeroHandler(foo); i/=0; //foo wird aufgerufen
-
ahoi
@Shade Of Mine:
//jetzt irgendwo im code: Int i; i.setDivZeroHandler(foo); i/=0; //foo wird aufgerufen <- warum ???
wieso soll bei i/=0; foo() aufgerufen werden ? wo bekommt er denn die anweisung ?? schoen langsam zweifel ich an mir selber. ich werd mich am besten naechsten motag bei ner baeckerei als lehrling bewerben :o(
@ Marc++us :
hab schon in ner tauschboerse gesucht aber noch nicht gefunden *gg noe sclechter scherz. buecher sind das einzige was ich nicht ueber ne tauschboerse beziehen wuerde. ueber nen PC lesen is mir zu doof.NixVerstehenUndAufLeitungStehDeadman
-
Lies dir ein Tutorial über WinAPI Programmierung durch. Dann rafst du das schon!
Du programmierst doch auch mit der VCL, nicht?Da stellt man doch irgendwie in der Art sowas ein wie
Button.OnClick = ButtonKlickMethode;
Wenn du auf den Button klickst bekommt dein Programm eine Nachricht von Windows und die VCL ruft dann die für OnClick definierte Methode auf, in diesem Fall ButtonKlickMethode.
-
ereignisse stellen eigendlich weniger probleme dar. mir gehts jetzt da um die callback funktionen. und ich steh voll auf dem schlauch und raff garnix
-
*grrrrrr*
wie soll man dir noch helfen :o
-
ButtonKlickMethode ist doch die Callback-Funktion bzw. Methode!!
-
lasst mal die ButtonClick-methode in ruhe, die hat euch nix getan.
von Shade Of Mine das beispiel oben weiter:
i/=0; //foo wird aufgerufen
warum wird da dann die funktion foo aufgerufen ? wo wird das festgelegt ?
bin ich vielleicht auch schon blind geworden ?kann mir das jemand verraten, wo das im code steht ?
Deadman
PS: sorry das ich so begriffsstuetzig bin
-
im operator /=
const Int &Int::operator /= (int x) { if (x == 0) myDivZeroHandler(); else ... }
und myDivZeroHandler zeigt auf foo. das ist callback
[ Dieser Beitrag wurde am 29.03.2003 um 15:07 Uhr von Noesis editiert. ]