我正在使用C ++ / CLI接口层将C#WPF对话框添加到现有的C ++ MFC应用程序中。我有工作,除了我有模态问题。例如:
我觉得如果能正确设置父对话框会更好。但到目前为止,我还没有能够将MFC对话框的父级设置为WPF对话框,反之亦然。而且,我甚至都不知道是否能解决这个问题。
有什么想法吗?
答案 0 :(得分:4)
打开CDialog时,诀窍是使用WindowsInteropHelper获取父WPF对话框的HWND。然后,您可以使用CWnd :: Attach将CWND包装在CWnd类中以传递给CDialog的构造函数。
我遇到的问题是我已经构建了CDialog,但尚未显示。只有当目标子窗口具有有效句柄时,才能使用各种版本的SetParent。我必须在我的CDialog类中编写一个新函数来设置m_wndParent,这是它在最终创建对话框时用作父元素的函数。一切都很好!
以某种方式从MFC对话框创建WPF对话框“只是工作”。这很神奇。
答案 1 :(得分:2)
显示WPF对话框时,您是否使用HwndSource class来包装WPF窗口?如果是这样,您可以::SetParent WPF窗口以及使用HwndSource.Handle属性来设置子子的父级。