He estado leyendo la documentación MSDN en subclases y yo hemos tenido éxito en el manejo de eventos en una subclasemensajes que pasan de la subclase a WndProc originales
Mi problema es con el paso de mensajes al WndProc originales.
Como ejemplo, si tengo una ventana, con un control de casilla de grupo subclasificado y un botón como secundario de ese grupo, quiero manejar el evento de botón en el procedimiento de ventana original, no el procedimiento de grupo de subclase.
Básicamente, quiero un procedimiento de subclase vacío:
LRESULT FAR PASCAL SubClassFunc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
return CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam);
}
Dónde oldProc es:
FARPROC oldProc = (FARPROC)SetClassLong(group_box, GCL_WDPROC, (DWORD)SubCLassFunc);
Y donde la ventana y cuadro de grupo y el botón son:
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);
que pueda manejar los eventos de botón en el SubClassFunc, pero lo que quiero hacer es pasarlos a la ventana WndProc. Parece que CallWindowProc no está haciendo esto, o puedo estar totalmente equivocado en cómo funciona CallWindowProc.