CFileDialog support XP and Vista

CFileDialog support XP and Vista

本文关键字:Vista and XP support CFileDialog      更新时间:2023-10-16

我的应用程序支持XP及以上版本,在Vista及以上版本下运行时,我尝试使用CFileDialog较新的接口(即GetIFileOpenDialog())(以尊重这些接口的限制)。

因此,我检查了操作系统版本,并在适当的情况下尝试使用这些接口,然后使用XP的旧方法。问题是,在XP下运行时,我会遇到LoadLibrary失败(代码在DLL中),所以似乎有一些早期绑定正在进行。只要我注释掉使用这些接口的代码,LoadLibrary就会成功。

有没有可能使用XP下运行的Vista功能来编写CFileDialog代码,即使没有调用该代码?

感谢

您需要手动用LoadLibrary()加载相关库(不会第二次加载,但您需要一个好的句柄),然后使用GetProcAddress()获取函数的地址(GetIFileOpenDialog)。如果你只是直接使用Vista函数,它不会在XP上加载,因为正如你所说,它会直接绑定函数。