IFileDialog与C语言兼容吗?
Is IFileDialog compatible with C?
本文关键字:语言 IFileDialog 更新时间:2023-10-16
问题不言自明。我有一个使用SHBrowseforfolder的程序,但现在他们想让我升级到IFileDialog,我做了,但在c++中,所以有可能让它与C一起工作吗?因为它是面向对象的?
IFileDialog是Microsoft的组件对象模型(COM)的一部分。COM编程可以用c语言完成,不过相当乏味。
这是一个教程(不能保证它的质量)
http://www.codeproject.com/Articles/13601/COM-in-plain-C这是使用IFileDialog
打印选定文件夹名称的C代码:
#include <shobjidl_core.h> //somewhere in your program
//...
IFileDialog *pfd;
IShellItem *psiResult;
PWSTR pszFilePath = NULL;
if (SUCCEEDED(CoCreateInstance(&CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, &IID_IFileOpenDialog, &pfd))){
pfd->lpVtbl->SetOptions(pfd, FOS_PICKFOLDERS);
pfd->lpVtbl->Show(pfd, hwnd);
if (SUCCEEDED(pfd->lpVtbl->GetResult(pfd, &psiResult))){
if (SUCCEEDED(psiResult->lpVtbl->GetDisplayName(psiResult, SIGDN_FILESYSPATH, &pszFilePath))){
WCHAR *p = pszFilePath;
while (*p){
printf("%c",*p);//I don't like unicode
p++;
}
CoTaskMemFree(pszFilePath);
}
psiResult->lpVtbl->Release(psiResult);
}
pfd->lpVtbl->Release(pfd);
}
相关文章:
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 为什么编程语言被编译为汇编程序而不是二进制?
- QDirIterator语言 - No hasNext not FilePath reaction
- "C.UTF-8" C++ Windows 上的语言环境?
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- IFileDialog与C语言兼容吗?