我知道可以采用a dialog that you built yourself and parent it on another form。但是,您可以在您设计的表单上为标准Windows系统对话框提供父级吗?
具体来说,我正在尝试设置一个包含多个选项卡的表单,这些选项卡提供了获取程序使用的数据引用的不同方法。其中一个选项卡应代表文件系统,执行此操作的理想方法是the standard Open dialog,可以使用COM标识CLSID_FileOpenDialog
进行实例化。
有没有办法获取系统对话框并使其在另一个窗口中显示为父级,没有边框,标题栏等?
答案 0 :(得分:0)
有一些方法可以使用钩子(通过SetWindowsHookEx()
或SetWinEventHook()
)来获取系统对话框的HWND,然后你可以随意做任何事情,例如调用SetParent()
。但仅仅因为你并不意味着你应该。系统对话框设计为作为自己的窗口运行,而不是嵌入在别人的窗口中。更好的解决方案可能是使用Windows资源管理器(和系统对话框)通过IShellFolder::CreateViewObject()
或SHCreateShellFolderView()
使用的相同Shell显示组件,或者查找执行交互操作的第三方解决方案与壳牌为你。