分类: WINDOWS
2008-04-14 11:38:46
void CDlgClientSingalCPJG::OnOK()
{
//指定文件存放位置
CWnd* pMainCWnd = NULL;
pMainCWnd = GetActiveWindow();
CString csFolder = _T( "" );
HWND pMainHWnd = pMainCWnd->GetSafeHwnd();
SelectFolder( pMainHWnd, csFolder );
.........
}
int CDlgClientSingalCPJG::SelectFolder(HWND hWnd,CString& strFolder)
{
strFolder.Empty();
LPMALLOC lpMalloc;
if (::SHGetMalloc(&lpMalloc) != NOERROR)
return 0;
char szDisplayName[_MAX_PATH];
char szBuffer[_MAX_PATH];
BROWSEINFO browseInfo;
browseInfo.hwndOwner = hWnd;
browseInfo.pidlRoot = NULL; // set root at Desktop
browseInfo.pszDisplayName = szDisplayName;
browseInfo.lpszTitle = "选择一个文件夹";
browseInfo.ulFlags = BIF_USENEWUI;
browseInfo.lpfn = NULL;
browseInfo.lParam = 0;
LPITEMIDLIST lpItemIDList;
if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL)
{
// Get the path of the selected folder from the item ID list.
if (::SHGetPathFromIDList(lpItemIDList, szBuffer))
{ // At this point, szBuffer contains the path the user chose.
if (szBuffer[0] == '\0')
return 0;
// We have a path in szBuffer! Return it.
strFolder = szBuffer;
return 1;
}
else
return 1; // strResult is empty
lpMalloc->Free(lpItemIDList);
lpMalloc->Release();
}
return 1;
}