mal wieder saublöde frage: LRESULT CALLBACK in eigene Klasse



  • moin,
    ich hatte vor, eine klasse zu erzeugen, die für mich erstmal ein child-fenster erstellt und auch eine entsprechende callback funktion dafür.
    nun geht mein problem aber schon damit los, dass ich ja bei der erzeugung des fensters unter "WndChild.lpfnWnd" die übliche angabe für die callback funktion machen muss. nunja, wenn ich also wie üblich eine callback funktion erzeuge, allerdings innerhalb der klasse, dann akzeptiert er die angabe nicht und wirft mir folgendes raus:

    "error C2440: '=' : 'LRESULT (__stdcall DialogClass::* )(HWND,UINT,WPARAM,LPARAM)' kann nicht in 'WNDPROC' konvertiert werden"

    was mache ich falsch, oder ist sowas überhaupt nicht möglich ?

    kann mir jemand einen tip geben ?



  • static



  • '__stdcall DialogClass::*' ? Sollte das nicht die thiscall Konvention haben? Häufig sieht man nämlich wie Leute versuchen eine Membermethode als Parameter zu übergeben, obwohl eine klassische C Funktion erwartet wird. Erst wenn man die Membermethode als static deklariert funktioniert es. Wenn du das tust, dann hast du keinen Zugriff auf die Klassenattribute mehr.

    Wie du dieses Problem auf einfache Art lösen kannst erfahrst du hier: http://www.catch22.org.uk/tuts/custctrl.asp



  • jut, ich werd mir das mal zu gemüte fürn... 🙂 danke!



  • hey, das mit static hat geklappt... danke 🙂

    nur meckert er nun, wenn ich unter WM_COMMAND eine Funktion meiner Klasse aufrufen will. Jede andere Funktion ausserhalb der klasse geht, nur die innerhalb der klasse werden mit :

    "Unzulässiger Aufruf einer nicht statischen Memberfunktion"

    was mache ich den nun schon wieder falsch ?



  • das steht doch auf der Seite wo Aziz dir den Link von gegeben hat.



  • hm ich habs mir nochmal angeschaut, hat wohl etwas mit diesem zeiger am ende zu tun.. mal schaun, ob ich das hinkriege...



  • ich hab bis eben anhand des tuts rum experimentiert, ich kiegs aber nicht hin, das einzige, was nun klappt, ist der zugriff auf die klassenfunktionen über den pointer, allerdings stürzt das programm dennoch gnadenlos ab, wenn ich innerhalb der funktionen auf die variablen, zeiger und arrays, die ich innerhalb der klasse angelegt habe, zugreife 😞
    mal ganz abgesehen, dass er bestimmte dinge des tutorials überhaupt nicht compilieren will... 😞



  • Vielleicht solltest du dich erstmal mit den C++ Grundlagen beschäftigen, in Konsolenanwendungen.
    Wenn du die beherrschst, ist "CALLBACK in Klasse" absolut kein Problem mehr, auch ohne Tutorial.

    Es hilft wenig, wenn wir dir eine fertige Lösung präsentieren, die du kopierst und benutzt, aber nicht verstehst.



  • im prinzip hast du schon recht, hab aber inzwischen hinbekommen, allerdings anders, als im tut beschrieben. dennoch danke 🙂


Anmelden zum Antworten