winapi — Лучшая практика для создания подкласса системного класса в переполнении стека

Я работаю над классом оболочки 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);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector