У меня есть приложение c ++ для Windows, которое вызывает библиотеку c ++ / cli, которая вызывает управляемую библиотеку. Управляемая библиотека вызывает OpenFileDialog.Show с родительским окном WPF, которое принадлежит окну Win32. Я не нашел лучшего способа сделать это, и все ресурсы, которые я прочитал здесь и в поиске google и social.msdn, рекомендуют делать то, что я делаю.
Диалог открывается просто отлично, но когда я нажимаю, например, кнопку «Отмена», приложение полностью теряет фокус. Я не уверен, почему это происходит, но я не могу остановить это. Я пробовал разные вещи безрезультатно.
Если я просто запускаю OpenFileDialog без создания окна WPF, я не вижу проблемы.
Если я не установлю владельца окна WPF, я не вижу проблемы. Если я вызываю OpenFileDialog.Show и не передаю родительский элемент, но все равно создаю окно WPF и устанавливаю его владельца, я все равно вижу проблему.
Я могу взломать его, чтобы установить окно родительского приложения на передний план после того, как оно потеряет фокус, но я бы не хотел.
Я загрузил небольшой пример решения для моего сценария, который иллюстрирует проблему:
http://dl.dropbox.com/u/26054523/MixedExample.zip
Любая помощь будет оценена.