有没有办法在另一个表单中使用标准Windows对话框?

时间:2014-01-23 02:10:28

标签: windows winapi

我知道可以采用a dialog that you built yourself and parent it on another form。但是,您可以在您设计的表单上为标准Windows系统对话框提供父级吗?

具体来说,我正在尝试设置一个包含多个选项卡的表单,这些选项卡提供了获取程序使用的数据引用的不同方法。其中一个选项卡应代表文件系统,执行此操作的理想方法是the standard Open dialog,可以使用COM标识CLSID_FileOpenDialog进行实例化。

有没有办法获取系统对话框并使其在另一个窗口中显示为父级,没有边框,标题栏等?

1 个答案:

答案 0 :(得分:0)

有一些方法可以使用钩子(通过SetWindowsHookEx()SetWinEventHook())来获取系统对话框的HWND,然后你可以随意做任何事情,例如调用SetParent() 。但仅仅因为你并不意味着你应该。系统对话框设计为作为自己的窗口运行,而不是嵌入在别人的窗口中。更好的解决方案可能是使用Windows资源管理器(和系统对话框)通过IShellFolder::CreateViewObject()SHCreateShellFolderView()使用的相同Shell显示组件,或者查找执行交互操作的第三方解决方案与壳牌为你。