Вы не хотите возвращать фокус к другому виду, как только кто-то щелкнет по дереву: это сделает ваше приложение непригодным для использования. например Это не позволит пользователям перемещаться по дереву с помощью клавиатуры, поскольку дерево никогда не будет удерживать фокус достаточно долго.
Если вы действительно хотите, чтобы панель инструментов отображала состояние вашего второго вида (я не уверен, что это хорошая идея), у вас есть несколько вариантов. Сделай свой выбор. 2 приходят на ум:
Ваше древовидное представление НЕ должно быть CView. Используйте простой CTreeCtrl. Не очень хорошо, потому что это как бы нарушает парадигму doc / view (например, больше не вызывается OnUpdate () дерева при каждом вызове UpdateAllViews ()).
Не дать дереву стать активным видом. Для этого:
2.а При просмотре получает фокус (OnFocus ()):
STATIC_DOWNCAST (CFrameWnd, AfxMainWnd ()) -> SetActiveView (pTheOtherView);
2б. Извлеките класс CMySplitterWnd из CSplitterWnd, затем переопределите CMySplitterWnd :: SetActivePane (), чтобы запретить ему устанавливать древовидное представление в качестве активного представления.
В любом случае, добро пожаловать в удивительный мир внутренних устройств MFC, где погружение в исходный код является обязательным ежедневным видом спорта; -)
Редактировать: добавлено пропущенное НЕ