При открытии CDialog хитрость заключается в использовании WindowsInteropHelper для получения HWND родительского диалога WPF. Затем вы можете использовать CWnd :: Attach, чтобы обернуть этот HWND в класс CWnd для передачи в конструктор CDialog.
Проблема, с которой я столкнулся, заключалась в том, что я уже создал CDialog., Но еще не отображал. Различные версии SetParent могут использоваться, только если у вашего целевого дочернего окна уже есть действительный дескриптор. Мне пришлось написать новую функцию в моем классе CDialog, чтобы установить m_wndParent, который он использует в качестве родителя, когда в конце концов создает диалог. Тогда все отлично работает!
Каким-то образом создание диалогов WPF из диалогов MFC "просто работает". Это волшебство.