Я действительно решил проблему с помощью следующего кода в представлении V :
BOOL CMyView::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN || pMsg->message == WM_MOUSEWHEEL )
{
::SendMessage( (HWND) m_myControl->Handle.ToInt32(), pMsg->message, pMsg->wParam, pMsg->lParam );
}
return CWinFormsView::PreTranslateMessage(pMsg);
}
Также я убрал код, который устанавливает фокус на C по щелчку мыши. Таким образом, он никогда не фокусируется, а получает сообщения родительского представления (мне нужны WM_KEYDOWN и WM_MOUSEWHEEL) от PreTranslateMessage . Не настройки фокуса важны, потому что иначе я потерял бы способность переключаться между представлениями MDI, используя Ctrl + Tab (если фокусировался C ). Так что теперь я могу свободно переключаться между ними, затем, когда V становится активным, я могу использовать клавиши для управления C , но я все еще могу использовать Ctrl + Tab для переключения на другое представление без необходимости используйте мышь.