16,471
社区成员
发帖
与我相关
我的任务
分享
inline int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
_TCHAR szDir[_MAX_PATH];
switch(uMsg)
{
case BFFM_INITIALIZED: // 初始化
break;
case BFFM_SELCHANGED: // 路径改变
if( SHGetPathFromIDList( (LPITEMIDLIST)lParam, szDir ) )
SendMessage( hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)szDir );
break;
default:
break;
}
return 0;
}
void CTeskDlg::OnGetOpenPath()
{
// TODO: Add your control notification handler code here
_TCHAR pszDisplayName[MAX_PATH];
BROWSEINFO bi;
LPITEMIDLIST lpID;
// 设置参数
bi.hwndOwner = GetSafeHwnd(); // Handle to the owner window
bi.pidlRoot = NULL; // Location of root folder
bi.pszDisplayName = pszDisplayName; // Folder name selected
bi.lpszTitle = _T("选择路径"); // Title name
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; // Option flags
bi.lpfn = BrowseCallbackProc; // Callback function
bi.lParam = 0; // LPARAM
bi.iImage = NULL; // Image selected
lpID = SHBrowseForFolder( &bi );
if( lpID != NULL )
{
if( SHGetPathFromIDList( lpID, pszDisplayName ) )
{
m_strPath = pszDisplayName;
if( m_strPath[m_strPath.GetLength() - 1] != '\\' )
m_strPath += _T('\\');
UpdateData( FALSE );
}
}
}