WINAPI Subclassing, wie in C++-Klasse bringen ?



  • Hallo,
    zum Thema WindowProc in C++ Klasse findet man ja einiges in der SUCHE.
    Habe eine Button-Klasse, möchte wenn der Button zerstört wird mir was in der
    ini sichern. Es reicht aber nicht das im Destroktor der Klasse zu machen, weil
    Eigenschaften des Buttons abgefragt werden. Im Destuktor der Klasse ist
    praktisch der Button als GUI-Objekt schon nicht mehr existent und die Abfrage
    ob der Checked oder nicht ist nicht möglich.

    Der Button wird mit ResourcenEditor erstellt, der Button-Klasse wird das hwnd
    im Init des Dialoges zugewiesen.
    Es ist so auch etwas schwierig den this-Zeiger in die statische Methode der
    Button-Klasse zu bekommen, welche die WM_CLOSE Nachricht abfangen soll.

    Wie kann ich nun am besten vorgehen ?

    Vielen Dank
    RB



  • Wie kann ich nun am besten vorgehen ?

    Im Forum MFC posten.



  • Hallo,

    hm... hat eigentlich nichts mit mfc zu tun ...
    also das this-Zeiger Prob habe ich gelöst mit Set/Get WindowLong.

    nur ein in der Klasse stehendes
    <header>
    static WNDPROC m_wndproc;
    und in Anwendung gebrachtes
    <cpp>
    CButton::m_wndproc = (WNDPROC)GetWindowLong(hwnd, GWL_WNDPROC);
    bringt den Fehler
    Nichtaufgeloestes externes Symbol:

    wird m_wndproc außerhalb der Klasse definiert, im Code entsprechend geändert
    funktioniert es.

    Grüße
    RB



  • hat sich erledigt.
    mußte nur die statische Variable im Gültigkeitsbereich der *.cpp bekannt geben



  • Es sei noch angemerkt, dass es etwas kompliziert ist ein WM_CREATE sub-zu-klassen (schönes deutsch 👍 ). Dazu ist es aber wirklich interessant sich mal die MFC sourcen anzuschauen 😉



  • RED-BARON schrieb:

    also das this-Zeiger Prob habe ich gelöst mit Set/Get WindowLong.

    Verwende besser Set-/GetWindowLongPtr.

    Jochen Kalmbach schrieb:

    Es sei noch angemerkt, dass es etwas kompliziert ist ein WM_CREATE sub-zu-klassen

    Was allerdings mit Superclassing relativ einfach ist.



  • groovemaster schrieb:

    Jochen Kalmbach schrieb:

    Es sei noch angemerkt, dass es etwas kompliziert ist ein WM_CREATE sub-zu-klassen

    Was allerdings mit Superclassing relativ einfach ist.

    Es sei noch angemerkt, dass Superclassing nicht immer geht (z.B. bei der "Scrollbar")...
    http://msdn.microsoft.com/library/en-us/dnwui/html/msdn_subclas3.asp


Anmelden zum Antworten