Ich habe, die MSDN Dokumentation über Subklassifizieren Lese und ich habe im Umgang mit Ereignissen in einer UnterklassePassing Nachrichten von Unterklasse Original WndProc
Mein Problem ist, Nachrichten mit vorbei wieder auf den ursprünglichen WndProc erfolgreich.
Als Beispiel, wenn ich ein Fenster mit einem untergeordneten groupbox-Steuerelement und eine Schaltfläche als ein Kind dieses groupbox habe, möchte ich das Button-Ereignis in der ursprünglichen Fensterprozedur behandeln, nicht die untergeordnete groupbox-Prozedur.
Im Grunde möchte ich eine leere Unterklasse-Prozedur:
LRESULT FAR PASCAL SubClassFunc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam);
}
Wo oldProc ist:
FARPROC oldProc = (FARPROC)SetClassLong(group_box, GCL_WDPROC, (DWORD)SubCLassFunc);
Und wo das Fenster und groupbox und Taste sind:
HWND window = CreateWindowEx(
WS_EX_WINDOWEDGE,
appname,
TEXT("Subclass Test"),
WS_VISIBLE |WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
300,
400,
NULL,
NULL,
hInstance,
0);
HWND group_box = CreateWindowEx(
0,
TEXT("BUTTON"),
TEXT("Group Box"),
WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
8,
8,
275,
350,
window,
NULL,
hInstance,
0);
HWND push_button = CreateWindowEx(
0,
TEXT("BUTTON"),
TEXT("Push Button"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_VCENTER,
50,
100,
100,
25,
group_box,
(HMENU)PUSH_BUTTON,
hInstance,
0);
ich kann Handle die Button-Ereignisse in der SubClassFunc, aber was ich tun möchte, ist, sie an das Fenster WndProc zurückgeben. Es scheint, dass CallWindowProc dies nicht tut, oder ich kann völlig falsch sein, wie CallWindowProc funktioniert.