CFileDialog类实现文件夹路径的获取

2025-05-15 09:52:26
推荐回答(3个)
回答1:

是的,
CFileDialog pCFileDialog(true,NULL,NULL,0,"文本文件(*.txt)|*.txt");
//CFileDialog pCFileDialog最后一个参数是打开文件对话框的筛选器内容,不是文件路径
pCFileDialog.m_ofn.lpstrTitle = "打开文件 ";
char pbuf[1024];
memset(pbuf,0,1024);
if(pCFileDialog.DoModal()==IDOK)
{
CFile filename(pCFileDialog.GetFileName(),CFile::modeRead);
filename.Read(pbuf,1024);
MessageBox(pbuf);
filename.Close;
}

回答2:

http://hi.baidu.com/lucifer_mike/blog/item/16961bef0bce3be3ce1b3ef9.html

CString sFolderPath;

BROWSEINFO bi;

char Buffer[MAX_PATH];

//初始化入口参数bi开始

bi.hwndOwner = NULL;

bi.pidlRoot =NULL;//初始化制定的root目录很不容易,

bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框

bi.lpszTitle = "修改接收路径";

//bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件

bi.ulFlags = BIF_EDITBOX;//包括文件

bi.lpfn = NULL;

bi.iImage=IDR_MAINFRAME;

//初始化入口参数bi结束

LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框

if(pIDList)

{

SHGetPathFromIDList(pIDList, Buffer);

//取得文件夹路径到Buffer里

sFolderPath = Buffer;//将文件夹路径保存在一个CString对象里

}

LPMALLOC lpMalloc;

if(FAILED(SHGetMalloc(&lpMalloc)))

return;

lpMalloc->Free(pIDList);

lpMalloc->Release();

MessageBox(sFolderPath,"Title",MB_OK);

回答3:

VC6的实现不了