Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从公共控件对话框挂钩获取对Win7库的引用?_C++_Windows 7_Common Controls - Fatal编程技术网

C++ 如何从公共控件对话框挂钩获取对Win7库的引用?

C++ 如何从公共控件对话框挂钩获取对Win7库的引用?,c++,windows-7,common-controls,C++,Windows 7,Common Controls,我正在Windows7上实现一个通用控件对话框。我的仪表是用C++编写的。在用户选择库(如文档或图片)之前,一切正常。当发生这种情况时,我会像预期的那样收到CDN\u FOLDERCHANGE通知,但是当我发送对话框CDM\u GETFOLDERPATH消息以检索新选择的文件夹时,我会得到一个错误返回-1,commdlgextenderror返回0。在某些方面,这是有意义的,因为它不是一个文件夹,但其他消息似乎都不起作用(如CDM\u GETFOLDERIDLIST或CDM\u GETFILEP

我正在Windows7上实现一个通用控件对话框。我的仪表是用C++编写的。在用户选择库(如文档或图片)之前,一切正常。当发生这种情况时,我会像预期的那样收到
CDN\u FOLDERCHANGE
通知,但是当我发送对话框
CDM\u GETFOLDERPATH
消息以检索新选择的文件夹时,我会得到一个错误返回-1,
commdlgextenderror
返回0。在某些方面,这是有意义的,因为它不是一个文件夹,但其他消息似乎都不起作用(如
CDM\u GETFOLDERIDLIST
CDM\u GETFILEPATH

那么,如何从HookProc的
中判断当前选定的项目或文件夹是库?一旦您知道它是一个库,您如何获得它的
IShellItem
IShellLibrary
接口,以便您可以确定哪些文件系统文件夹构成了库

(创建
GetOpenFileName
对话框的代码是遗留代码,因此我不能用Windows-7推荐的
IFileOpenDialog
界面替换它,该界面以一种合理的方式支持库)