【问题标题】:C# - ShowDialog set owner to the unmanaged windowC# - ShowDialog 将所有者设置为非托管窗口
【发布时间】:2017-07-18 18:27:35
【问题描述】:

在我们的应用程序中,我们有一个从 C++ MFC 非托管世界显示的对话框 (CDialog)。

我的 Win-Forms 模式对话框 (C#) 需要将非托管对话框设置为所有者,从而设置为父级。

我不知道 C++ 窗口的句柄或其他任何内容。

我的问题是 - 如何从非托管 MFC 中找到当前活动窗口并将其设置为我的模态对话框的所有者。

GerForegroundWindow 在整个会话中提供活动窗口,而不是在我的应用程序中。

非常感谢您的帮助。

【问题讨论】:

  • 你能告诉我们你做了哪些研究来尝试这样做吗?在发现的方法中,为什么它们不起作用?
  • 您好,欢迎来到 SO!,请查看 documentation about asking question。我很确定已经问过有关查找当前活动窗口的问题。此外,您在邮件中提出了一个很好的问题,为什么不在标题中使用它呢?
  • 好吧,我确实尝试过 GerForegroundWindow。它为我提供了当前会话的最顶层窗口(如果 Visual Studio 处于活动状态,它会将 Visual Studio 作为最顶层窗口返回)。但我需要程序中的当前活动窗口。

标签: c# c++ mfc


【解决方案1】:

使用 GetActiveWindow 解决了这个问题。 为了创建所有者,我使用了 NativeWindow.FromHandle 并传递了从 GetActiveWindow 检索到的句柄

谢谢!

【讨论】:

  • 为什么不使用对话框的 m_hWnd 呢?
猜你喜欢
  • 2021-08-25
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
相关资源
最近更新 更多