首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c++ Builder6 请问一个小函数用法

2012-03-15 
c++ Builder6 请教一个小函数用法 - C++ Builder / Windows SDK/API在c++ Builder 6 中,我们知道GetTempPa

c++ Builder6 请教一个小函数用法 - C++ Builder / Windows SDK/API
在c++ Builder 6 中,我们知道GetTempPath可以获取系统临时路径。

现在我想获取,当前用户 我的文档路径 和 桌面路径,请问对应的函数是什么?


[解决办法]
判断windows的Desktop及其它目录


使用API函数SHGetSpecialFolder。shlobj.h里有SHGetSpecialFolder的原型声明。这个函数可以帮我们找到windows的Desktop目录、启动目录、我的文档目录等。

SHGetSpecialFolder需要三个参数。 第一个参数是HWND,它指定了"所有者窗口":在调用这个函数时可能出现的对话框或消息框。第二个参数是一个整数id,决定哪个目录是待查找目录,它的取值可能是:

CSIDL_BITBUCKET 回收站
CSIDL_CONTROLS 控制面板
CSIDL_DESKTOP Windows 桌面desktop
CSIDL_DESKTOPDIRECTORY desktop的目录
CSIDL_DRIVES 我的电脑
CSIDL_FONTS 字体目录
CSIDL_NETHOOD 网上邻居
CSIDL_NETWORK 网上邻居virtual folder
CSIDL_PERSONAL 我的文档
CSIDL_PRINTERS 打印机
CSIDL_PROGRAMS 程序组
CSIDL_RECENT 大多数最近打开的文档列一
CSIDL_SENDTO “发送到”菜单项
CSIDL_STARTMENU 任务条启动菜单项
CSIDL_STARTUP 启动目录
CSIDL_TEMPLATES 临时文档
最后一个参数是pidl地址。SHGetSpecialFolderLocation把地址写到pidl。

下面的代码演示了怎样使用SHGetSpecialFolderLocation:

C/C++ code
//----------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){LPITEMIDLIST pidl;LPMALLOC pShellMalloc;char szDir[MAX_PATH];if(SUCCEEDED(SHGetMalloc(&pShellMalloc))){if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOPDIRECTORY,&pidl))){// 如果成功返回trueif(SHGetPathFromIDList(pidl, szDir)){Label1->Caption = szDir;}pShellMalloc->Free(pidl);}pShellMalloc->Release();}}//----------------------------------
[解决办法]
学习学习

热点排行