У меня есть приложение MFC MDI, и я пытаюсь добавить в него новый диалог.Я хочу, чтобы этот диалог был в WPF (окно в основном, а не диалог).Это окно должно быть немодальным и дочерним по отношению к текущему представлению MDI.
Допустим, у меня есть CMyView в приложении MFC, и в его OnCreate я пытаюсь создать окно WPF.Для этого я создал класс-оболочку CMyWindowWrapper (который компилируется с / CLR)
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
m_wrapper.Create(this);
return 0;
}
В классе-оболочке окна есть функция Create, которая фактически создает окно WPF:
void CMyWindowWrapper::Create(CWnd* pParent)
{
MyWindow^ window = gcnew MyWindow();
window->ShowModeless((IntPtr)pParent->GetSafeHwnd());
m_myWindow = window;
}
MyWindow - это окно WPF, в которое я добавил функцию ShowModeless следующим образом:
public void ShowModeless(IntPtr parent)
{
WindowInteropHelper helper = new WindowInteropHelper(this);
helper.Owner = parent;
Show();
ShowInTaskbar = false;
}
Теперь приложение ведет себя следующим образом: всякий раз, когда создается CMyView, немодальное MyWindow создается успешно, и оно всегда отображается навершина CMyView, даже если основное внимание уделяется CMyView.Однако, когда CMyView закрыт или свернут, MyWindow не следует за ним.Оно закрывается / минимизируется только в том случае, если все приложение закрыто / свернуто.
Я могу прикрепить образец приложения, показывающий проблему, если это необходимо.
Пожалуйста, сообщите.
Спасиботак много.