如何在一个打开文件窗口中选择多个文件并且一起打开?最好有程序源码!
学习学习!

解决方案 »

  1.   

    (和源码差不多,可以这样做)
    1、创建基于多文档的应用程序,注意在AppWizard过程中,为CView类选择基类为CEditView
    2、通过ClassWizard添加CXXXView类的ID_FILE_OPEN命令处理函数,并写入以下代码:
    void CXXXView::OnFileOpen() 
    {
    TCHAR *pszFile = new TCHAR[MAX_PATH * MAX_PATH];
    memset(pszFile,0,sizeof(TCHAR)*MAX_PATH * MAX_PATH);

    //config file dialog
    CFileDialog dlg(TRUE,
    NULL, 
    NULL, 
    OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING ,
    _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"),
    NULL);

    dlg.m_ofn.lpstrFile = pszFile;
    dlg.m_ofn.nMaxFile = MAX_PATH*MAX_PATH;
    CString sPathName;
    int nRetValue;

    nRetValue = dlg.DoModal();
    if (nRetValue == IDOK)
    {
    POSITION Pos;

    Pos = dlg.GetStartPosition();
    while (Pos != NULL)
    {
    sPathName = dlg.GetNextPathName(Pos);//这里就可以遍历选中的文件
    //AddPath(sPathName);这里是我的处理函数,你自己随便做了
    AfxGetApp()->OpenDocumentFile(sPathName);

    } // while
    } // if
    }
    (试试吧,我试过了)
      

  2.   

    char namebuf[8192];
    memset(namebuf, 0, 8192);
    static char BASED_CODE szFilter[] = "所有文件(*.*)|*.*|BMP位图(*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|JEPG文件(*.jpg;*.jpeg;*.jpe;*.jif)|*.jpg;*.jpeg;*.jpe;*.jif|GIF计算机服务(*.gif)|*.gif|ICO图标(*.ico)|*.ico|TIFF Tag图像(*.tif;*.tiff)|*.tif;*.tiff|Windows图元文件(*.wmf)|*.wmf|PNG便携网络图形(*.png)|*.png|TGA Targa(*.tga)|*.tga||";
    CPreviewFileDlg dlg(TRUE,NULL,NULL, OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
    dlg.m_ofn.lpstrFile = namebuf;
    dlg.m_ofn.nMaxFile = 8192;
    dlg.m_ofn.lpstrTitle = "选择需要上传的文件(可多选)";
    if(dlg.DoModal() == IDOK)
    {

    POSITION pos;
    pos = dlg.GetStartPosition();
    for(;;)
    {
    this->UpdateWindow();
    Sleep(500);
    CString path;
    CString name;
    try
    {
    path = dlg.GetNextPathName(pos);
    name = GetName(path);
    }
    catch(...)
    {
    break;
    }
    UploadFile(path, name);
    }
    OnOpenset();
    this->UpdateWindow();
    }
    else
    {
    DWORD error = CommDlgExtendedError();
    if(error == 0)
    {
    AfxMessageBox("没有选择文件!");
    }
    else
    {
    AfxMessageBox("选择文件数目过多!");
    }
    }