Я разработчик приложения, в котором есть тонна устаревшего кода MFC, и у нас есть все те же проблемы, что и у вас. Главной движущей силой нашей стратегии было устранение как можно большего риска и неопределенности, что означало избегать Большого переписывания. Как все мы знаем, TBR терпит неудачу большую часть времени. Поэтому мы выбрали поэтапный подход, который позволяет нам сохранять модули, которые не будут изменяться в текущем выпуске, писать новые управляемые функции и портировать функции, которые получают улучшения для управляемых.
Вы можете сделать это несколькими способами:
Размещение содержимого WPF в представлениях MFC (см. здесь )
Для приложений MFC MDI создайте новую платформу WinForms и разместите ваши представления MFC MDI (см. здесь )
Управление пользовательскими элементами управления WinForms в диалоговых окнах и представлениях MFC (см. здесь )
Проблема с принятием WPF (вариант 1) заключается в том, что он потребует от вас переписать все ваши интерфейсы сразу, иначе это будет выглядеть довольно шизофренично.
Второй подход выглядит жизнеспособным, но очень сложным.
Третий подход - это тот, который мы выбрали, и он работает очень хорошо. Это позволяет вам выборочно обновлять области вашего приложения, сохраняя при этом общую согласованность и не затрагивая вещи, которые не сломаны.
Visual C ++ 2008 Feature Pack выглядит интересно, хотя я с ним не играл. Похоже, это может помочь с вашей проблемой устаревшего внешнего вида. Если «лента» будет слишком раздражающей для ваших пользователей, вы можете посмотреть на сторонних поставщиков управления MFC и / или WinForms.
Моя общая рекомендация заключается в том, что взаимодействие + добавочные изменения определенно предпочтительнее, чем быстрые изменения.
Прочитав ваше продолжение, я определенно могу подтвердить, что прирост производительности фреймворка значительно перевешивает инвестиции в его изучение. Никто в нашей команде не использовал C # в начале этой работы, и теперь мы все предпочитаем это.