Subclassing - Wie initialisieren ?
-
Hallo mal wieder,
Kann mir jemand kurz verraten wie ich statische Variablen im meiner WindowProc()
initialisiere? Das Problem ist, es wird ja keine WM_CREATE mehr geschickt, da das Fenster bereits erzeugt ist, wenn ich ihm mit SetWindowLong() eine neue WindowProc() zuweise. Da ich womöglich dutzende Fenster mit der gleichen WindowProc() habe, wärs praktisch, wo's geht statische Variablen zu benutzen und diese einaml zu initialisiren und fertig. Erleuchtet mich, ihr seid die besten,...Biff
edit:
kleines Beispiel:
möchte WM_MOUSEHOVER auf den Fensters abfangenLRESULT CALLBACK ThumbNailProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static TRACKMOUSEEVENT ME; ME.cbSize=sizeof(TRACKMOUSEEVENT); ME.dwFlags=TME_HOVER | TME_LEAVE; ME.hwndTrack=hwnd; ME.dwHoverTime=1000; ... }so wie ich es sehe wird ME nun bei jedem Aufruf der Funktion initialisert, richtig ?
-
Wie wäre es mit Superclassing?
-
Danke für den Tip erstmal. Ich will mir aber im Moment
nicht unbedingt neue Theorie draufpacken.
Könnte ich mir nicht eine Phantasiemessage z.B.
#define WM_SUBCLASSED 12345678
definieren und diese einfach nach SetWindowLong()
manuell an das gesubclassedte Fenster schicken um
es zu initialisieren?
-
Ich habe es gerade mit einer normalen WndProc getestet und da funktioniert obiger Code einwandfrei - wird also nicht jedesmal neu initialisiert!
