我的一个程序要处理好多文件,是一个一个处理的,我想用文件对话框指定被处理文件,一次选择多个文件让我的那个程序逐个处理,这么写呢?

解决方案 »

  1.   

    用CFileDialog,设定OFN_ALLOWMULTISELECT属性就可以多选了。
      

  2.   

    void CLiuJunqingDlg::OnRAWfile() 
    {
    // TODO: Add your control notification handler code here

    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK) FilePathName=dlg.GetFileTitle();
    }
    我就会这么获得文件名 ,但是选多个文件怎么付给变量呢?
      

  3.   

    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK) FileName=dlg.GetFileTitle();
    woxin(642610271)  18:04:04
    比如文件名是 a.txt,经过上面运行后是不产生这个结果 FileName="a.txt"
      

  4.   


    CString filepath;
    CFileDialog Filedlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|   
      OFN_ALLOWMULTISELECT|OFN_EXPLORER,   
      "Data Files (*.bak;*.txt)|*.bak;*.txt|All files(*.*)|*.*||", NULL);
    TCHAR *pBuffer = new TCHAR[MAX_PATH * 100];//最多允许100个文件   
    Filedlg.m_ofn.lpstrFile = pBuffer;   
    Filedlg.m_ofn.nMaxFile = 100*MAX_PATH;   
    Filedlg.m_ofn.lStructSize = 88;
    if(IDOK == Filedlg.DoModal())
    {
    POSITION pos = Filedlg.GetStartPosition();
    while(pos != NULL)
    {   
    filepath = Filedlg.GetNextPathName(pos);   
    //   do sth.....
    }   
    }   
      

  5.   

    5楼写的很清楚了,在// do sth 的地方使用 shellExecute()把文件名和处理文件的程序传进去
      

  6.   

    void CLiuJunqingDlg::OnRAWfile() 
    {
    // TODO: Add your control notification handler code here
         

    CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT|OFN_EXPLORER);
    TCHAR *pBuffer=new TCHAR[MAX_PATH*100];//最多允许100个文件
    dlg.m_ofn.lpstrFile=pBuffer;   
        dlg.m_ofn.nMaxFile=100*MAX_PATH;   
        dlg.m_ofn.lStructSize=88;   
    if(dlg.DoModal()==IDOK) 
    {
    POSITION pos=dlg.GetStartPosition();
    FileName=dlg.GetFileTitle(pos);
    }
    //FileName=dlg.GetFileTitle();
    }void CLiuJunqingDlg::OnGo() 
    {

    if(recdex==2&&binfiledex==3) 
    {
    comline=myprogram+kg+" "+"top"+kg+"tps"+kg+FileName+"."+tps+">"+FileName+";
         system(comline);
    }

    else
    {
    CFile acbsfile(_T("C:\\w.txt"),CFile::modeReadWrite|CFile::modeCreate);
        acbsfile.Write(FileName,10);
    }各位高手这是我参照5楼写的,我的目的是打开文件获得好的文件名在void CLiuJunqingDlg::OnGo() 中逐个执行.
      

  7.   

    filepath = Filedlg.GetNextPathName(pos);   编译错误 
    D:\Program Files\Microsoft Visual Studio\MyProjects\LiuJunqing\LiuJunqingDlg.cpp(253) : error C2660: 'GetFileTitle' : function does not take 1 parameters
      

  8.   

    GetFileTitle这个应该是没有参数的,你传参数啦?
      

  9.   

    CFileDialog dlg(TRUE); 
    if(dlg.DoModal()==IDOK) FileName=dlg.GetFileTitle(); 
    woxin(642610271)  18:04:04 
    比如文件名是 a.txt,经过上面运行后是不产生这个结果 FileName="a.txt"