SHBrowseForFolder打开默认路径
原创转自: http://blog.csdn.net/shuilan0066/article/details/7302904
一般路径方法如下:
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl==NULL)
return;
if(pidl != NULL)
{
TCHAR * path = new TCHAR[MAX_PATH];
SHGetPathFromIDList(pidl,path);
// MessageBox(NULL,path,TEXT("Choose"),MB_OK);
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//pidl尖头物体用完后应释放,之前忽略
{
pMalloc->Free(pidl);
pMalloc->Release();
}
m_filePath=path;
UpdateData(FALSE);
delete [] path;
}
这将打开根目录,并且每次它位于根目录中时, 很是麻烦
你能打开指定的目录吗? 答案是肯定的
第1步: 建立类的CALLBACK函数
public:
static int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
switch(uMsg)
{
case BFFM_INITIALIZED: //初始化消息
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)(LPTSTR)(LPCTSTR)m_filePath); // m_filePath 类的静态变量
break;
case BFFM_SELCHANGED: //选择路径更改,
{
TCHAR curr[MAX_PATH];
SHGetPathFromIDList((LPCITEMIDLIST)lParam,curr);
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)curr);
}
break;
default:
break;
}
return 0;
}
第2步:指定BROWSEINFO bi相关信息
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
TCHAR szDefaultDir[MAX_PATH];
CString strDef(_T("C:\WINDOWS\"));
memcpy(szDefaultDir,strDef.GetBuffer(strDef.GetLength()2),strDef.GetLength()2);
strDef.ReleaseBuffer();
szDefaultDir[strDef.GetLength()]=0;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = 0;
bi.pszDisplayName = 0;
bi.lpszTitle = L"选择路径";
bi.ulFlags = BIF_STATUSTEXT;
bi.lpfn = BrowseCallbackProc ; //设置CALLBACK函数
bi.iImage = 0;
bi.lParam = long(&szDefaultDir); //设置默认路径
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl==NULL)
return;
if(pidl != NULL)
{
TCHAR * path = new TCHAR[MAX_PATH];
SHGetPathFromIDList(pidl,path);
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//pidl尖头物体用完后应松开
{
pMalloc->Free(pidl);
pMalloc->Release();
}
m_filePath=path;
// 在文件中保存路径
CString pathSet;
pathSet=m_exePath+L"UnionPicSet.ini";
WritePrivateProfileString(_T("Path"),_T("DirectoryPath"),m_filePath,pathSet);
UpdateData(FALSE);
delete [] path;
}
翻译自:
http://blog.csdn.net/reallyioio/article/details/2948755
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除