Я читал документацию MSDN по подклассам и мне удалось обработать события в подклассе
Моя проблема связана с передачей сообщений обратно на оригинальный WndProc.
Например, если у меня есть окно с субклассовым элементом управления групповым ящиком и кнопкой в качестве дочернего элемента этого группового ящика, я хочу обработать событие кнопки в исходной процедуре окна, а не в процедуре подклассового группового блока. 1007 *
По сути, я хочу пустую процедуру подкласса:
LRESULT FAR PASCAL SubClassFunc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam);
}
Где oldProc:
FARPROC oldProc = (FARPROC)SetClassLong(group_box, GCL_WDPROC, (DWORD)SubCLassFunc);
А где окно, группа и кнопка:
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);
Я могу обрабатывать события кнопок в SubClassFunc, но я хочу передать их обратно в окно WndProc. Кажется, что CallWindowProc не делает этого, или я могу быть совершенно неправ в том, как работает CallWindowProc.