Callback

MrDude

Mitglied
Hallo,
ich habe folgende zeile in einem Programm entdeckt und die bereitet mir Kopfschmerzen:


LRESULT CALLBACK WndProc (HWND hWnd, UINT uiMessage,
WPARAM wParam, LPARAM lParam)

kann mir jemand erklären, was das callback bedeutet?



mfg mr dude:-)
 
Soweit ich das verstehe läuft die Kommunikation zwischen dem Windows-OS und Deinem Programm wie folgt:

Der Einsprungpunkt in Dein Programm bildet die WinMain. Darin deklarierst Du die Window Class u.a. mit wndclass.lpfnWndProc=WndProc.

Da Du das WndProc mittels CALLBACK definiert hast ist Windows nun in der Lage, die Kommunikation mit Deinem Programm über WndProc zu realisieren.

Gruß
René
 
siehe MSDN
CALLBACK Anstelle von FAR PASCAL in Anwendungsrückruf-Routinen, wie Fensterprozeduren und Dialogprozeduren, zu verwenden.

ist einfach ein Makro das dem Linker sagt wie er die Funktion ansprechen soll, dabei wird die Funktion über ein Funktuionszeiger angesprochen (bei Dispatch Message)
 
hab bei dem problem auch so ein problem ! wollte den opengl tutorial anfang in ne klasse packen und jetzt kam der fehler bei raus
Code:
error C2440: 'type cast' : '' kann nicht in 'long (__stdcall *)(struct HWND__ *,
unsigned int,unsigned int,long)' konvertiert werden
hab alles ausser die WinMain in ne Klasse geschrieben
und jetzt bringt er den fehler bei :
Code:
wc.lpfnWndProc = (WNDPROC) WndProc;
liegt das vielleich hier dran?
Code:
LRESULT CALLBACK GLMain::WndProc(HWND hWnd, UINT uMsg, 
WPARAM Param, LPARAM lParam)
an dem komischen Callback
oder sollte ich den WinMain auch in die klasse packen
oder kann mir jemand den fehler erklären?
 
sorry aber du weißt doch bestimmt selber wie das is mit dem dicke Bücher wälzen! und durch sowas kann man dann auch dazu lernen! oder nie
 
moin


sorry aber du weißt doch bestimmt selber wie das is mit dem dicke Bücher wälzen! und durch sowas kann man dann auch dazu lernen! oder nie
Ja weiss ich.
Es ist mühsam, manchmal langweilig, langwierig, ...
Aber man lernt sachen die man durch Probieren und zusammstückeln von fremden Code nie lernen würde, man versteht fremden Code viel leichter und kann die gegeben Mittel viel besser ausnutzen!
Der Wille reicht oft nicht.
Das soll nicht heissen das man erstmal Bücher lesen soll, bevor man hier ne Frage stellt, aber wenn man sich mit einem Thema befassen will kommt ums lernen/lesen nciht rum, und besonders nciht um das worauf das neue Thema aufbaut hier z.B. Callback Routinen oder das Wissen mit Klassen umzugehen.


mfg
umbrasaxum
 
ich will das Thema nicht weite ausbreiten! aber ich hab in allen 2 Büchern die ich über C++ habe nach Callback routinen gesucht und nichts gefunden!
 
Wenn du eine Klassenmethode als Callbackfunktion nutzen willst, dann musst du sie als statisch deklarieren. Außerdem solltest du sie dann über ihren vollständigen Namen ansprechen (GLMain::WndProc anstatt nur WndProc).
 
moin


Ich breite das Thema aber nochmal aus.

Du findest in "normalen" Büchern auch nichts über Callback, da es ein Teil der Windowsprogrammierung ist, also etwas spezielleres.


mfg
umbrasaxum
 
Zurück