Я работаю над классом оболочки Win32. Я изначально подклассифицировал EditBox следующим образом:
// Create the Edit Box
Edit_hWnd = CreateWindowEx(.., "Edit", ...);
Edit_OldProc = (WNDPROC)GetWindowLongPtr(Edit_hWnd, GWLP_WNDPROC);
SetWindowLongPtr(Edit_hWnd, GWLP_WNDPROC, (LONG_PTR)EditWndProc);
// Then in EditWndProc(...):
return CallWindowProc(Edit_OldProc, hWnd, Message, wParam, lParam);
Я только что наткнулся на новый метод, который устанавливает «Процедура окна с классом системы». Будет ли это более предпочтительный метод? Я действительно удивлен, что никогда не видел этого, поскольку я был за сотнями источников подклассов.
Новый метод:
WNDCLASS wc;
GetClassInfoEx(hInstance, "Edit", &wc);
wc.lpszClassName = L"NewEditClass";
Edit_OldProc = wc.lpfnWndProc;
wc.lpfnWndProc = EditWndProc
RegisterClassEx(&wc);
// Create the Edit Box
CreateWindowEx(.., "NewEditClass", ...);
// Then in EditWndProc(...):
return Edit_OldProc(hWnd, Message, lParam, wParam);
Задача ещё не решена.
Других решений пока нет …