举例:
CFoldersDialog cFolderDlg;
cFolderDlg.BrowseFolder(m_hWnd,&m_strDirPath,_T("请选择文件夹"));
浏览文件夹的对话框会显示“请选择文件夹”提示字符,确定之后的文件夹路径会返回到m_strDirPath中,取消后不返回。
// FoldersDialog.cpp: implementation of the CFoldersDialog class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "FoldersDialog.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CFoldersDialog::CFoldersDialog()
{
}
CFoldersDialog::~CFoldersDialog()
{
}
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData)
{
switch(uMsg)
{
case BFFM_INITIALIZED:
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData);
break;
default:
break;
}
return 0;
}
int CFoldersDialog::BrowseFolder(HWND hWnd, CString* pBrowsePath, LPSTR strTitle)
{
BROWSEINFO bi;
TCHAR szDir[MAX_PATH];
LPITEMIDLIST lpidlBrowse;
CString BrowsePath;
if (pBrowsePath == NULL || hWnd == NULL)
return FALSE;
BrowsePath = *pBrowsePath;
if(BrowsePath != "")
{
if(BrowsePath.Right(1) == "\\")
BrowsePath = BrowsePath.Left(BrowsePath.GetLength() - 1); //删除末尾的"\\"
}
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = hWnd;
bi.lpszTitle = strTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = BrowseCallbackProc;
bi.lParam = (LPARAM)pBrowsePath->GetBuffer(0);
lpidlBrowse = SHBrowseForFolder(&bi);
if (lpidlBrowse)
{
SHGetPathFromIDList(lpidlBrowse,szDir);
pBrowsePath->Format("%s",szDir);
}
return TRUE;
}
/**************************************************************************/
// FoldersDialog.h : header file
//
#if !defined(AFX_FOLDERSDIALOG_H_INCLUDED_)
#define AFX_FOLDERSDIALOG_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CFoldersDialog dialog
class CFoldersDialog
{
public:
CFoldersDialog();
virtual ~CFoldersDialog();
int BrowseFolder(HWND hWnd, CString* pRootPath, LPSTR strTitle);
};
#endif // !defined(AFX_FOLDERSDIALOG_H_INCLUDED_)
/***************************************************************************/
评论