Aleexeey, при переопределении обработки сообщения нужно возвращаться из своей оконной процедуры с не нулевым результатом. Вот к примеру
LRESULT MyWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
- это будет абсолютно то же самое для дочернего класса, как будто ничего не переопределяли.
А вот тут 3 разных случая переопределения реакции на события (в зависимости от нужной цели):
LRESULT MyWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch
{
case WM_xxx1
{
//выполняем свой код
//...
//хотим также, чтобы выполнился и код базового класса - после свича это будет
}
break;
case WM_xxx2
{
//выполняем свой код
//...
//больше ничего не нужно выполнять тут
return 1;
}
break;
case WM_xxx3
{
//хотим, чтобы выполнился код базового класса
DefWindowProc(hWnd, Msg, wParam, lParam);
//выполняем свой код
//...
//больше ничего не нужно выполнять тут
return 1;
}
break;
}
//всё остальное по умолчанию - в процедуру базового класса
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
должно всё выглядеть как-то так