tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
1983
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MrDude MrDude ist offline Mitglied
    Registriert seit
    Jan 2004
    Beiträge
    23
    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
     

  2. #2
    Rene Albrecht Rene Albrecht ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Hamburg
    Beiträge
    125
    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é
     

  3. #3
    basd basd ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Ort
    München
    Beiträge
    264
    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)
     

  4. #4
    superharry superharry ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    94
    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 :
    1
    2
    
    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 :
    1
    
    wc.lpfnWndProc = (WNDPROC) WndProc;
    liegt das vielleich hier dran?
    Code :
    1
    2
    
    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?
     

  5. #5
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Ich kann nicht verstehen warum viele immer mit neuen Sachen anfangen, wenn sie nicht mal die Grundlagen beheerschen.

    Hier ein Beispielcode eines von mir geschrieben Programms:
    http://www.tutorials.de/tutorials191789.html


    mfg
    umbrasaxum
     

  6. #6
    superharry superharry ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    94
    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
     

  7. #7
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    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
     

  8. #8
    superharry superharry ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    94
    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!
     

  9. #9
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.800
    Blog-Einträge
    5
    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).
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  10. #10
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    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
     

Ähnliche Themen

  1. Was ist CALLBACK?
    Von devian_der_999 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 14.12.10, 13:23
  2. Callback in VCL Anwendung
    Von PaRoX im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 19.11.08, 11:02
  3. Callback & Listener ?
    Von Grafixboy im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 12.09.08, 18:57
  4. Callback umbauen in MFC
    Von Wu-mc im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 28.12.05, 14:08
  5. Was ist Callback?
    Von Tutankhseth im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 07.08.04, 00:54