我需要能够获得 WinForm 对话框的 Owner's HWND。在非托管中,我有一个后台线程可以获取前面窗口的 HWND。然后代码调用 ::GetParent(frontHWND) 来查看它是否需要隐藏不同的非模态 MFC 对话框。当 WinForm 对话框是 frontHWND 时,我总是为 GetParent 调用返回 NULL。我也试过 GetOwner 意识到 .Net 试图清理 Parent 和 Owner 之间的差异。查看带有 Spy++ 的 WinForm 对话框,它还说 WinForm 没有父级或所有者。我已经通过了
NativeWindow ^natWin = gcnew NativeWindow();
natWin->AssignHandle(IntPtr(hwndParent));
managedDlg->ShowDialog(natWin);
上面的代码没有设置 WinForm 的所有者。我尝试从 OnFormShown() 中的 WinForm 代码调用 Win32 SetParent,但锁定了 MFC 应用程序和 WinForm。
有人可以解释如何让我的非托管对话框/应用程序成为托管 winform 的所有者/父级吗?