gpt4 book ai didi

wpf - 无模式子 WPF 窗口到 native MFC MDI 应用程序

转载 作者:行者123 更新时间:2023-12-04 23:53:35 25 4
gpt4 key购买 nike

我有一个 MFC MDI 应用程序,我正在尝试向其中添加一个新对话框。我希望这个对话框在 WPF 中(基本上是一个窗口而不是一个对话框)。此窗口应该是无模式的,并且是当前 MDI View 的子窗口。

假设我在 MFC 应用程序中有 CMyView,在它的 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 不会跟随它。仅当整个应用程序关闭/最小化时,它才会关闭/最小化。

如果需要,我可以附上显示问题的示例应用程序。

请指教。

非常感谢。

最佳答案

另一种解决方案是使 WPF 窗口成为用户控件。创建一个MFC无模式对话框并将WPF用户控件放在MFC无模式对话框中。

关于wpf - 无模式子 WPF 窗口到 native MFC MDI 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253334/

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