您的位置首页生活快答

怎么用CFileDialog 选择文件夹

怎么用CFileDialog 选择文件夹

的有关信息介绍如下:

怎么用CFileDialog 选择文件夹

CString BrowseFolder(HWND hWnd, LPCTSTR lpTitle)

{

char szPath[MAX_PATH]={0};

BROWSEINFO m_bi;

m_bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;

m_bi.hwndOwner = hWnd;

m_bi.pidlRoot = NULL;

m_bi.lpszTitle = lpTitle;

m_bi.lpfn = NULL;

m_bi.lParam = NULL;

m_bi.pszDisplayName = szPath;

LPITEMIDLIST pidl = ::SHBrowseForFolder( &m_bi );

if ( pidl )

{

if( !::SHGetPathFromIDList ( pidl, szPath ) ) szPath=0;

IMalloc * pMalloc = NULL;

if ( SUCCEEDED ( ::SHGetMalloc( &pMalloc ) ) ) // 取得IMalloc分配器接口

{

pMalloc->Free( pidl ); // 释放内存

pMalloc->Release(); // 释放接口

}

}

return szPath;

}

=============================================================

调用

void CFlorderDlg::OnButton1()

{

// TODO: Add your control notification handler code here

CString SelectPath=BrowseFolder(this->m_hWnd,"选择目录");

AfxMessageBox(SelectPath);

}

用户在磁盘上寻找文件时,所历经的文件夹线路叫路径。路径分为绝对路径和相对路径。

1】绝对路径:从根文件夹开始的路径,以“\”作为开始。

2】相对路径:从当前文件夹开始的路径。

DOS程序命令中:d代表盘符 p代表路径 0(零)代表文件本身,%~dp0就是文件所在的完整路径

Windows应用中文件夹路径就是当打开文件夹时地址栏显示的信息,如

H:\Downloads\Game代表的就是Game文件夹的完整路径

不能用CFileDialog

用::SHBrowseForFolder才行

例子:

C/C++ code

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

BROWSEINFO bi;

bi.hwndOwner=NULL;

bi.pidlRoot=NULL;

bi.pszDisplayName=NULL;

bi.lpszTitle=NULL;

bi.ulFlags=0;

bi.lpfn =NULL;

bi.iImage =0;

LPCITEMIDLIST pidl=SHBrowseForFolder(&bi);

if(!pidl)

return;

TCHAR szDisplayName;

SHGetPathFromIDList(pidl,szDisplayName);

CString str(szDisplayName);