CE选择目录对话框(转)

本文转载于http://blog.163.com/zhaojun_xf/blog/static/30050580201132221118479/

在Wince下要打开目录对话框需要调用函数SHBrowseForFolder(),调用此函数一定要注意在工程中添加静态库ceshell.lib。否则会报错无法连接,具体的方法是选择工程的属性->“连接器”->“输入”->“附加依赖项”,输入ceshell.lib,即可。

添加静态库:

CE选择目录对话框(转)

BOOL BrowseDirectory(TCHAR *title,TCHAR *fileDir)
{
 TCHAR dir[MAX_PATH];
 ZeroMemory(&dir,MAX_PATH);

 BROWSEINFO bi;
 bi.hwndOwner      = NULL;
 bi.pidlRoot       = NULL;
 bi.pszDisplayName = dir;
 bi.lpszTitle      = title;
 bi.ulFlags        = ;
 bi.lpfn           = NULL;
 bi.lParam         = NULL;
 bi.iImage         = NULL; 

 if (!SHGetPathFromIDList(SHBrowseForFolder(&bi),dir))
 {
  return (FALSE);
 }

 lstrcpy(fileDir,dir);

 return (TRUE);
}

在需要的地方调用此函数即可,title为在对话框上显示的标题,fileDir为读取的目录项。

运行结果:

CE选择目录对话框(转)

下面转载内容出自:http://blog.csdn.net/scu_zhongxq/archive/2010/03/07/5354003.aspx

在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法:

选择目录对话框

//选择目录按钮
void CDcPackerDlg::OnBnClickedDecgen()
{
    char szPath[MAX_PATH];     //存放选择的目录路径
    CString str;

    ZeroMemory(szPath, sizeof(szPath));  

    BROWSEINFO bi;
    bi.hwndOwner = m_hWnd;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = szPath;
    bi.lpszTitle = "请选择需要打包的目录:";
    bi.ulFlags = ;
    bi.lpfn = NULL;
    bi.lParam = ;
    bi.iImage = ;
    //弹出选择目录对话框
    LPITEMIDLIST lp = SHBrowseForFolder(&bi);  

    if(lp && SHGetPathFromIDList(lp, szPath))
    {
        str.Format("选择的目录为 %s",  szPath);
        AfxMessageBox(str);

    }
    else
        AfxMessageBox("无效的目录,请重新选择");
}

选择文件对话框

CString CDcPackerDlg::BootOpenDialog()   //返回选择的文件名称
{
    CString strFile = _T("");

    CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);

    if (dlgFile.DoModal())
    {
        strFile = dlgFile.GetPathName();
    }

    return strFile;
}
上一篇:NSMutableAttributedString常用代码


下一篇:Tarjan_LCA