现在会用 Cfiledilog 类,但是打开的是 打开文件 对话框,点确定按钮,无法获得文件夹的路径
也会用SHBrowseForFolder,选择文件夹
我现在的需求是 样子要是 CFileDilog 那样的对话框, 但是可以像SHBrowseForFolder那样选择文件夹,得到文件夹的路径,应该如何做呀,求指教
也会用SHBrowseForFolder,选择文件夹
我现在的需求是 样子要是 CFileDilog 那样的对话框, 但是可以像SHBrowseForFolder那样选择文件夹,得到文件夹的路径,应该如何做呀,求指教
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
NULL,
NULL);
dlg.DoModal();
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
{
if(uMsg==BFFM_INITIALIZED)
{
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
LPARAM(lpData));
}
}
return 0;
}
TCHAR chPath[255]; //用来存储路径的字符串
CString strPath = "";
BROWSEINFO bInfo;
GetModuleFileName(NULL,chPath,MAX_PATH);
strPath=chPath;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner = m_hWnd;
bInfo.lpszTitle = _T("请选择路径: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
bInfo.lpfn = BrowseCallbackProc;
bInfo.lParam = (LPARAM)strPath.GetBuffer(strPath.GetLength()); LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
if(lpDlist != NULL) //用户按了确定按钮
{
SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
m_save_path=strPath;
UpdateData(FALSE);
}
这个例子我看了,好麻烦的说,有没有win32下的例子,我的不是mfc工程呀