SHBrowseForFolder设置默认文件夹
2010-07-09 20:28
846 查看
网上找了很多设置默认文件夹得方法,但是大多不尽如人意,最后找到了如下代码(自已也改了一些),发现比较合适,给大家分享下。
int CALLBACK BrowserCallbackProc
(//回调函数
HWND hWnd,
UINT uMsg,
LPARAM lParam,
LPARAM lpData
)
{
switch(uMsg)
{
case BFFM_INITIALIZED: //设置默认选择的文件夹
::SendMessage(hWnd,BFFM_SETSELECTION,1,lpData);
break;
default:
break;
}
return 0;
}
//strTitle 为对话框标题 strDir为默认路径调用结束后strDir为选择的路径
bool SelDirectory(HWND hWnd,LPCTSTR strTitle,CString& strDir)
{
BROWSEINFO bi;
char szDisplayName[MAX_PATH] = {0};
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = strTitle;
bi.ulFlags = BFFM_SETSELECTION;
bi.lpfn = BrowserCallbackProc;
bi.lParam = (LPARAM)(LPCTSTR)strDir;
bi.iImage = NULL;
// 显示目录选择对话框,如果按了取消,那么piid为NULL
ITEMIDLIST* piid = ::SHBrowseForFolder(&bi);
if(piid==NULL)
{
return false;
}
// 得到选择的目录
BOOL bValidPath = ::SHGetPathFromIDList(piid,szDisplayName);
if (!bValidPath)
{
return false;
}
LPMALLOC lpMalloc;
VERIFY(NOERROR==::SHGetMalloc(&lpMalloc));
lpMalloc->Free(piid);
lpMalloc->Release();
if('/0'==szDisplayName[0])
{
return false; //用户选择的可能的虚拟文件系统
}
strDir = szDisplayName;
strDir.TrimRight("//");
return true;
}
调用代码:
CString path;
path="D://实用软件//VC6MSDN";
SelDirectory (GetSafeHwnd(),"设置了默认文件夹哦",path);
int CALLBACK BrowserCallbackProc
(//回调函数
HWND hWnd,
UINT uMsg,
LPARAM lParam,
LPARAM lpData
)
{
switch(uMsg)
{
case BFFM_INITIALIZED: //设置默认选择的文件夹
::SendMessage(hWnd,BFFM_SETSELECTION,1,lpData);
break;
default:
break;
}
return 0;
}
//strTitle 为对话框标题 strDir为默认路径调用结束后strDir为选择的路径
bool SelDirectory(HWND hWnd,LPCTSTR strTitle,CString& strDir)
{
BROWSEINFO bi;
char szDisplayName[MAX_PATH] = {0};
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = strTitle;
bi.ulFlags = BFFM_SETSELECTION;
bi.lpfn = BrowserCallbackProc;
bi.lParam = (LPARAM)(LPCTSTR)strDir;
bi.iImage = NULL;
// 显示目录选择对话框,如果按了取消,那么piid为NULL
ITEMIDLIST* piid = ::SHBrowseForFolder(&bi);
if(piid==NULL)
{
return false;
}
// 得到选择的目录
BOOL bValidPath = ::SHGetPathFromIDList(piid,szDisplayName);
if (!bValidPath)
{
return false;
}
LPMALLOC lpMalloc;
VERIFY(NOERROR==::SHGetMalloc(&lpMalloc));
lpMalloc->Free(piid);
lpMalloc->Release();
if('/0'==szDisplayName[0])
{
return false; //用户选择的可能的虚拟文件系统
}
strDir = szDisplayName;
strDir.TrimRight("//");
return true;
}
调用代码:
CString path;
path="D://实用软件//VC6MSDN";
SelDirectory (GetSafeHwnd(),"设置了默认文件夹哦",path);
相关文章推荐
- 为SHBrowseForFolder 设置默认的文件夹
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- SHBrowseForFolder弹出的选择文件夹对话框改变默认title
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- 文件夹浏览(SHBrowseForFolder)
- Shell函数;COM对象;浏览文件夹;SHBrowseForFolder;BROWSEINFO;SHGetPathFromIDList
- 选择文件夹 SHBrowseForFolder
- 文件夹浏览(SHBrowseForFolder)
- 文件夹浏览(SHBrowseForFolder)
- 文件夹浏览(SHBrowseForFolder)
- SHBrowseForFolder 打开默认路径
- VC选择文件夹路径对话框 - SHBrowseForFolder 函数
- 文件夹浏览(SHBrowseForFolder)
- SHBrowseForFolder打开文件夹时,记住上一次打开的路径
- SHBrowseForFolder(选择文件夹)
- 转载:浏览文件夹对话框,演示SHBrowseForFolder用法
- SHBrowseForFolder 函数
- 利用startup.m文件设置matlab的Current Folder的默认文件夹