gpt4 book ai didi

wpf - 混合 MFC 和 WPF : Modal Dialogs

转载 作者:行者123 更新时间:2023-12-04 19:42:16 28 4
gpt4 key购买 nike

我正在使用 C++/CLI 接口(interface)层将 C# WPF 对话框添加到现有的 C++ MFC 应用程序。我有一些东西在工作,除了我在模态方面有问题。例如:

  1. MFC 应用程序使用 ShowDialog 显示 WPF 对话框。按预期工作。
  2. 那个 WPF 对话框显示了一个使用 DoModal 的 MFC 对话框。 WPF 对话框隐藏在基本 C++ 应用程序的后面,并且不会被禁用,除非我手动更改 IsEnabled。不理想,但它有效。
  3. 现在,MFC 对话框已关闭。现在由于某种原因,基本 MFC 应用程序已启用,而由于 WPF 对话框尚未关闭,它仍应被禁用。这很糟糕,因为它现在允许用户在 WPF 对话框仍然打开时做一些疯狂的事情。

我有一种感觉,如果我能正确设置父对话框,它会工作得更好。但到目前为止,我还不能将 MFC 对话框的父级设置为 WPF 对话框,反之亦然。而且,我什至不知道这是否能解决问题。

有什么想法吗?

最佳答案

打开 CDialog 时,诀窍是使用 WindowsInteropHelper 获取父 WPF 对话框的 HWND。然后,您可以使用 CWnd::Attach 将该 HWND 包装在 CWnd 类中以传递给 CDialog 的构造函数。

我遇到的问题是我已经构建了 CDialog,但尚未显示。仅当您的目标子窗口已经具有有效句柄时,才能使用各种版本的 SetParent。我不得不在我的 CDialog 类中编写一个新函数来设置 m_wndParent,这是它在最终创建对话框时用作父级的东西。然后一切正常!

以某种方式从 MFC 对话框创建 WPF 对话框“很管用”。这很神奇。

关于wpf - 混合 MFC 和 WPF : Modal Dialogs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com