[小白求助]如何选择文件?

68kg 2012-02-08 10:06:09
以下是一段获取用户选择路径(文件夹)的代码,我想获取单个某文件,或允许在选择文件时多选,该如何做? 请教了~~

void CDlgXXXX::OnBnClickedBtnsrcpath()
{
char inPath[512];
ZeroMemory(inPath, sizeof(inPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = inPath;
bi.lpszTitle = "请选择原始路径:";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
LPITEMIDLIST lp = SHBrowseForFolder(&bi);

UpdateData(false);
}
...全文
58 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
68kg 2012-02-09
  • 打赏
  • 举报
回复
void DlgTX0::OnBnClickedBtnsrcpath()
{
CFileDialog dlgFile(TRUE);

const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);

dlgFile.GetOFN().nMaxFile = c_cbBuffSize;

dlgFile.DoModal(); //fileName = C:\Users\XXX\Desktop\xxx.jpg 桌面某文件
fileName.ReleaseBuffer();
}
luciferisnotsatan 2012-02-08
  • 打赏
  • 举报
回复
MSDN里自己查下BROWSEINFO,SHBrowseForFolder
nanjun520 2012-02-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nanjun520 的回复:]

如果是获取 文件路径 直接使用CFileDialog 类就可以了。
[/Quote]

CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名
CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
nanjun520 2012-02-08
  • 打赏
  • 举报
回复
如果是获取 文件路径 直接使用CFileDialog 类就可以了。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧