TCHAR szDir[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST *pidl; bi.hwndOwner = m_hWnd; // 指定父窗口,在对话框显示期间,父窗口将被禁用 bi.pidlRoot = NULL; // 如果指定NULL,就以"桌面"为根 bi.pszDisplayName = szDir; bi.lpszTitle = "请选择要存放笔记的位置"; // 这一行将显示在对话框的顶端 bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS | BIF_BROWSEFORCOMPUTER; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; pidl = SHBrowseForFolder(&bi); if(pidl == NULL) return; if(!SHGetPathFromIDList(pidl, szDir)) return; else m_strPath = szDir; /* MessageBox(m_strPath);*/用到的结构和函数有: BROWSEINFO、ITEMIDLIST、SHBrowseForFolder、SHGetPathFromIDList。上面的m_strPath(是定义的CString类型的成员变量)就是得到的文件夹路径。
注:对于 BIF_NEWDIALOGSTYLE未定义的情况,在该文件头部加上:
#define BIF_NEWDIALOGSTYLE 0x0040
#define BIF_RETURNONLYFSDIRS 0x0001
对话框截图: