文件夹选择对话框的使用

来源:互联网 发布:美声软件 编辑:程序博客网 时间:2024/05/29 09:13

 

文件夹选择对话框的使用

一. 示例代码

 

CString iDir;
 BROWSEINFO bi;
 bi.hwndOwner = this->m_hWnd;
 bi.pidlRoot = NULL;
 bi.pszDisplayName = m_Dir.GetBuffer(512);
 bi.lpszTitle = _T("选择保存的文件夹");
 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_BROWSEFORCOMPUTER;
 bi.lpfn = NULL;
 bi.lParam = 0;
 bi.iImage = 0;
 ITEMIDLIST* pidl = ::SHBrowseForFolder(&bi);

 if (::SHGetPathFromIDList(pidl, m_Dir.GetBuffer(512)))
    m_Dir.ReleaseBuffer();

 

二. ROWSEINFO结构说明

 

hwndOwner:                          对话框的所有者
pidlRoot:                                从何根路径开始展开文件夹,缺省情况下从“桌面”开始展开.
pszDisplayName:                指向一个缓存,该缓存返回用户选中的文件夹的显示名称,
                                                缓存的大小设置为MAX_PATH
lpszTitle:                               对话框上的treeview控件上方显示的标题, 并不是对话框的标题
ulFlags:                                显示标志控制项.
                                               BIF_RETURNONLYFSDIRS, 只有当用户选中的是文件夹时"确定"按钮才有效
                                               BIF_BROWSEFORCOMPUTER, 只有选中"我的电脑"时"确定"按钮才有效
                                               BIF_EDITBOX, 在对话框上显示一个Edit,允许用户输入选中项的名称
                                               BIF_STATUSTEXT, 界面上包含一块statu区域, 回调函数通过向对话框发送
                                                                 BFFM_SETSTATUSTEXT消息设置静态文本
                                               BIF_VALIDATE, 当用户在Edit中输入不正确的名字时,向对话框发送
                                                                 BFFM_VALIDATEFAILED消息,并调用对话框的回调函数处理该消息
lpfn                                       设置处理对话框事件的回调函数
lParam                                对话框传递给回调函数的参数
iImage                                返回与选中文件夹关联的图片的index , 该index是图片在系统ImageList中的index值.

 

三.  SHBrowseForFolder函数

view plaincopy to clipboardprint?
LPITEMIDLIST WINAPI SHBrowseForFolder(  
  LPBROWSEINFO lpbi  
); 

该函数显示文件夹选择对话框, 并允许用户选择文件夹.返回值是指向一个ITEMIDLIST结构的指针, 该结构指定根目录下用户选中的文件夹. 如果在对话框上用户选择的 "取消"按钮, 则返回NULL四.  SHGetPathFromIDList函数

四.  SHGetPathFromIDList函数

WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(
  LPCITEMIDLIST pidl,
  LPSTR pszPath
);

该函数将ITEMIDLIST结构转换为文件系统路径.
pidl是待转换的ITEMIDLIST的指针
pszPath是转换后返回的字符串, 该字符串的最大长度为PATH_MAX

如果转换成功返回TRUE, 否则为FALSE

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ShardowM/archive/2008/06/06/2516213.aspx

原创粉丝点击