//回调函数 int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED ) { ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData); } return 0; } //button对应的函数 void CEncryptDlg::OnButtonSBrownEn() { LPITEMIDLIST pidlRoot = NULL; CString curPath(_T("F://long")); BROWSEINFO bi; char buffer[MAX_PATH]; ZeroMemory(buffer,MAX_PATH); bi.hwndOwner = GetSafeHwnd(); bi.pidlRoot = pidlRoot; bi.pszDisplayName = NULL; bi.lpszTitle = _T("选择一个文件夹"); bi.ulFlags = BIF_EDITBOX; bi.lpfn = BrowseCallbackProc; bi.lParam = (LPARAM)curPath.GetBuffer(MAX_PATH); bi.iImage = 0; LPITEMIDLIST pList = NULL; if ((pList = SHBrowseForFolder(&bi))!=NULL) { TCHAR path[MAX_PATH]; ZeroMemory(path,MAX_PATH); SHGetPathFromIDList(pList,path); mSFoldName = path; GetDlgItem(IDC_EDIT_SFOLD)->SetWindowText(mSFoldName); } }