OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ALLOWMULTISELECT 格式已经设置为多选,那么怎么分解出多选的名字???

解决方案 »

  1.   

    http://topic.csdn.net/t/20050708/14/4131669.html
      

  2.   

    是一个 MultiString结果,即:多个以0为结尾的字符串拼起来的字符串,末尾是2个0,第个字符串是路径,后面每个一个一个文件名。
      

  3.   

    LRESULT   OpenMultiFiles(HWND   hwnd)
    {
    OPENFILENAME   ofn;
    static   TCHAR   szFileName[8192]; //   String   buffer   especially   for   OFN_ALLOWMULTISELECT
    strcpy(szFileName,   "d:\\*.* ");
    static   TCHAR   szFilter[]   =   _T( "文本文件(*.TXT,   *txt)\0*.TXT\0*.txt\0\0 ");
    static   TCHAR   szTitle[]   =   _T( "OPEN ");ZeroMemory(&ofn,   sizeof(OPENFILENAME));
    ofn.lStructSize =   sizeof(OPENFILENAME);
    ofn.hwndOwner =   NULL;
    ofn.lpstrFilter =   szFilter;
    ofn.nFilterIndex =   1;
    ofn.lpstrFile =   szFileName;
    ofn.nMaxFile =   sizeof(szFileName);
    ofn.lpstrFileTitle =   NULL;
    ofn.lpstrTitle =   szTitle;
    ofn.nMaxFileTitle =   0;
    ofn.lpstrInitialDir   =   NULL;
    ofn.Flags   = OFN_OVERWRITEPROMPT   |   OFN_HIDEREADONLY   |   OFN_PATHMUSTEXIST  
    |   OFN_ALLOWMULTISELECT   |   OFN_EXPLORER;if   (GetOpenFileName(&ofn))   {
    LPTSTR   psz   =   ofn.lpstrFile   +   ofn.nFileOffset;
    psz[-1]   =   _T( '\\ ');//   得到所有文件
    while   (*psz   !=   0)   {
    int   len   =   _tcslen(psz);
    _tcscpy(ofn.lpstrFile   +   ofn.nFileOffset,   psz);
    psz   +=   len   +   1;//  
    char   szFile[MAX_PATH];
    strcpy(szFile,   ofn.lpstrFile);
    }
    }
    return   0;
    }