您的位置:首页 > 运维架构 > Shell

Shell API SHBrowseForFolder的用法

2010-07-23 17:12 495 查看




Code as bellow

{

BROWSEINFO bi;

bi.hwndOwner=NULL;

bi.pidlRoot=NULL;

bi.pszDisplayName=NULL;

bi.lpszTitle=NULL;

bi.ulFlags=0;

bi.lpfn =NULL;

bi.iImage =0;

LPCITEMIDLIST pidl=SHBrowseForFolder(&bi);

if(!pidl)

return;

TCHAR szDisplayName[255];

SHGetPathFromIDList(pidl,szDisplayName);

CString str(szDisplayName);

MessageBox(str,NULL,MB_OK);

}

该段代码呼叫SHBrowseForFolder函数弹出选择文件对话框,选择文件夹后调用SHGetPathFromIDList函数,把选择的文件夹名提取出来。用MessageBox show出来。

用到的API函数

SHBrowseForFolder

WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(

LPBROWSEINFO lpbi

);

Displays a dialog box that enables the user to select a shell folder.

Returns the address of an item identifier list that specifies the location of the selected folder relative to the root of the namespace. If the user chooses the Cancel button in the dialog box, the return value is NULL.

lpbi

Address of a BROWSEINFO structure that contains information used to display the dialog box.

The calling application is responsible for freeing the returned item identifier list by using the shell's task allocator.

SHGetPathFromIDList

WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(

LPCITEMIDLIST pidl,

LPSTR pszPath

);

Converts an item identifier list to a file system path.

Returns TRUE if successful, or FALSE otherwise.

pidl

Address of an item identifier list that specifies a file or directory location relative to the root of the namespace (the desktop).

pszPath

Address of a buffer to receive the file system path. This buffer must be at least MAX_PATH characters in size.

If the location specified by the pidl parameter is not part of the file system, this function will fail.



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: