Я смотрел на это некоторое время назад для аналогичного старого приложения, я начал с WPF and Win32 Interoperation Overview вместе с host MFC class inherited from CWnd in WPF. См. (И поиск) HwndHost Class, а также Hosting a Simple Win32 Control in a WPF Application.
Беда в том, что она никогда не срабатывала - я чувствовал, что это скомпрометировало приложение WPF, и я не мог заставить его работать где-нибудь достаточно надежно, поэтому я отказался от этого подхода.
Итак, взяв другой подход, я перестроил приложение MFC в качестве автономного «диалогового провайдера», в котором были только все диалоги. Это только что сделало весь диалог и уведомило приложение WPF о результатах. Это сработало и позволило приложению перемещаться вперед. Я также попробовал Leveraging the .NET Framework Inside an MFC Application, но он не работал изначально, и время было сущностью.
Окончательный результат был Q & АЦП написано в AWK, что взяли .RC в .cpp и .h и произвел XAML & C# для каждого диалога в форме, готовой для editting. Если вы построили диалоги MFC с помощью мастера классов, тогда должны быть полезные разделители, которые были очень полезны в этом процессе.
Пример полезным ограничителем:
//{{AFX_DATA_INIT(CDialogFileProperties)
Но как я могу это сделать? Как разместить CDialog внутри окна WPF? Это был мой вопрос ... – splintor
Я ничего не знаю о MFC, но вы можете экспортировать функцию C++, которая отобразит диалог, но это не будет в окне wpf. Это было бы в его собственном окне. –
Но вам лучше сделать аналогичный диалог в WPF с точки зрения обслуживания кода. –