IFileOpenDialog无法在XP中启动

时间:2011-08-26 08:28:10

标签: c++ windows winapi

我有一个示例应用程序,我想在其中选择一个文件夹。为此,我使用了SHBrowseForFolder()。但在Vista中它不会起作用。所以我使用了IFileOpenDialog。如果os版本是XP,我使用的是SHBrowseForFolder(),否则我使用的是IFileOpenDialog。

我的应用程序在vista中工作正常。但它无法在XP中启动。

请让我知道我需要做的任何事情。

更新:

我观察到它不是因为IFileOpenDialog接口。 我正在使用SHCreateItemFromParsingName()API在浏览时设置默认文件夹。 Shell32.dll在XP中不包含入口点。所以我面临这个问题。

要解决问题,我使用LoadLibrary和GetProcAddres()来获取Proc地址。

现在我可以运行该应用程序。

2 个答案:

答案 0 :(得分:2)

我们的产品在Vista / 7上使用SHBrowseForFolder而没有问题。你有什么代码用于该功能? GetLastError()返回什么?也许我们可以在那里找到问题。

答案 1 :(得分:1)

对于它的价值,回答直接问题,XP中没有IFileOpenDialog,这就是它失败的原因。 XP的等效API是GetOpenFileName。