SetWindowLong aus DLL
-
Hallo,
ich versuche in meinem Programm eine Funktion in meiner DLL aufzurufen. Diese soll ein static erstellen und die Funktion SetWindowLong darauf ausführen, um die MsgProc zu ändern.Die Funktion klappt wunderbar, wenn ich den Funktionsaufruf SetWindowLong auskommentier´, dann kann ich mein static sehen. Wenn ich ihn aber nicht auskommentiere aber nicht auskommentiere, kann ich das static seltsamerweiße nicht sehen.
Ich versteh echt nicht, warum das nciht funktioniert.
Vielen Dank im Voraus
-
Btw.: ich habe gerade herausgefunden, dass es nicht an der DLL liegt. Wenn ich die Funktion in mein Programm übernehme, funktioniert es auch nicht.
Code:
HWND m_hWnd = CreateWindow("static", "hoihoi", WS_CHILD | WS_VISIBLE | SS_NOTIFY | SS_BITMAP , Y, X, Height, Width, hWnd, (HMENU)"Hallo", hInst, NULL); WNDPROC wndProcO = (WNDPROC)SetWindowLong(m_hWnd, GWL_WNDPROC, (LONG)wndProc);
-
dann zeig doch mal wndProc
-
hi,
ich glaub, das ändert zwar nichts, aber hier:{ switch (msg) { case WM_MOUSEMOVE: /* Status setzen */ curBut->SE_SetStatusMOV(); break; } return DefWindowProc(hWnd, msg, wParam, lParam); }
-
lol, und wo ist der aufruf von CallWindowProc mit der alten Proc?
-
hm erstens, kannste mal den Smilie am Ende weglassen ???
Kannste mich aufklären, was du mit CallWindowProc meinst, hab das bis jetzt noch net gehört.Danke
Simon
-
[url=http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windowprocedures/windowprocedurereference/windowprocedurefunctions/callwindowproc.asp]MSDN: CallWindowProc
[/url]
Tutorial zu SubClassing (von www.winapi.net)
-
a) Bevor du die neue WndProc setzt, mußt du dir die alte merken
b) Für alle Messages, die du nicht exklusiv behandelst, mußt du die alte WndProc mittels CallWindowProc aufrufen.