我需要获取一个WinForm对话框所有者的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的所有者/父窗口吗?