请问:VC下如何使用"打开文件的通用对话框"来一次选择多个文件(高分伺候)

myepgc 2004-09-27 06:09:17
不用MFC提供的文件操作类!
使用GetOpenFileName()来打开文件,但是我在对话框中只能选择一个文件,我希望能同时选择多个文件,就象realone中加载多个歌曲一样。可是使用__ALLOWMULTISELECT不行,我不喜欢这个样子的多选对话框!小弟不知道怎么办了,高手们赐教!
OPENFILENAMEl结构里面有个钩子连接,我不知道和这有没有关系,不会用啊

高分伺候! :)
...全文
352 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifeequation 2004-09-28
  • 打赏
  • 举报
回复
gz
myepgc 2004-09-28
  • 打赏
  • 举报
回复
非常感谢!
这个问题解决了!
Kudeet 2004-09-27
  • 打赏
  • 举报
回复
一次得到多个文件名
#define FILE_BUF_LEN 4096 //文件名缓冲区大小,取决于文件个数和文件名长度
CFileDialog dlg(TRUE, NULL, NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT);
dlg.m_ofn.lpstrFile = new TCHAR[FILE_BUF_LEN];
dlg.m_ofn.nMaxFile=FILE_BUF_LEN;
if(dlg.DoModal()==IDOK)
{
POSITION pos=dlg.GetStartPosition();
while(pos)
{
CString filename=dlg.GetNextPathName();
.......
}
}
xdljf 2004-09-27
  • 打赏
  • 举报
回复
呵呵,有一句笔误:sprintf("file=%s",p);
printf("file=%s\n",p);
xdljf 2004-09-27
  • 打赏
  • 举报
回复
CHAR v_szFileFilter[200] = {0};
PCHAR p=v_szFileFilter;
sprintf(p,"所有文件");p = strchr(p,0);p++;
sprintf(p,"*.*");
CHAR szFile[MAX_PATH]; szFile[0] = 0;
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = GetSafeHwnd();
ofn.lpstrFilter = v_szFileFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
ofn.nMaxCustFilter = MAX_PATH;
ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ALLOWMULTISELECT;
if( GetOpenFileName(&ofn) )
{
p = ofn.lpstrFile;
while( *p )
{
sprintf("file=%s",p);
//get the next file name
p = strchr(p,0);
p++;
}
}
当选择多个文件时 ofn.lpstrFile 指向多个文件,每个文件的分隔符是“\0”

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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