“选择文件夹”对话框的封装

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

我们经常需要用到“选择文件夹”对话框,相应的API已经很好用,但稍嫌麻烦,所以我专门将其封装了一下,力求一步到位。

函数封装如下:

/*****************************************************************

** 函数名:GetPath

** 输 入: 无

** 输 出: CString strPath

** strPath非空, 表示用户选择的文件夹路径

** strPath为空, 表示用户点击了“取消”键,取消选择

** 功能描述:显示“选择文件夹”对话框,让用户选择文件夹

****************************************************************/

CString GetPath()

{

CString strPath = "";

BROWSEINFO bInfo;

ZeroMemory(&bInfo, sizeof(bInfo));

bInfo.hwndOwner = m_hWnd;

bInfo.lpszTitle = _T("请选择路径: ");

bInfo.ulFlags = BIF_RETURNONLYFSDIRS;

LPITEMIDLIST lpDlist; //用来保存返回信息的IDList

lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框

if(lpDlist != NULL) //用户按了确定按钮

{

TCHAR chPath[255]; //用来存储路径的字符串

SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串

strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串

}

return strPath;

}

调用时只需要用到以下代码:

CString strPath = GetPath();

则strPath为用户选择的文件夹路径。如果用户点击了对话框的取消键,则strPath为空字符串("");

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航