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