首页 > 代码库 > 获取GetOpenFileName多选文件名
获取GetOpenFileName多选文件名
1 void CWriteWnd::OpenFileDialog() 2 { 3 OPENFILENAME ofn; 4 TCHAR szOpenFileNames[80*MAX_PATH] = _T(""); 5 TCHAR szPath[MAX_PATH]; 6 TCHAR szFileName[80*MAX_PATH]; 7 8 TCHAR* p; 9 int nLen = 0;10 ZeroMemory(&ofn, sizeof(ofn)); 11 12 ofn.lStructSize = sizeof(ofn);13 ofn.hwndOwner = *this;14 ofn.lpstrFile = szOpenFileNames; 15 ofn.nMaxFile = sizeof(szOpenFileNames); 16 ofn.lpstrFilter = _T("自设文件类型(*.*)\0*.*\0所有文件(*.*)\0*.*\0\0") ;17 ofn.nFilterIndex = 1; 18 ofn.lpstrFileTitle = NULL; 19 ofn.nMaxFileTitle = 0; 20 ofn.lpstrInitialDir = NULL; 21 ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST |OFN_ALLOWMULTISELECT;22 23 24 25 if( GetOpenFileName( &ofn ) )26 { 27 //把第一个文件名前的复制到szPath,即:28 //如果只选了一个文件,就复制到最后一个‘/‘29 //如果选了多个文件,就复制到第一个NULL字符30 lstrcpyn(szPath, szOpenFileNames, ofn.nFileOffset );31 32 //当只选了一个文件时,下面这个NULL字符是必需的.33 //这里不区别对待选了一个和多个文件的情况34 35 szPath[ ofn.nFileOffset ] = ‘\0‘;36 nLen = lstrlen(szPath);37 38 if( szPath[nLen-1] != ‘\\‘ ) //如果选了多个文件,则必须加上‘\\‘39 {40 lstrcat(szPath, TEXT("\\"));41 }42 43 44 p = szOpenFileNames + ofn.nFileOffset; //把指针移到第一个文件45 46 47 while( *p )48 { 49 ZeroMemory(szFileName, sizeof(szFileName));50 lstrcat(szFileName, szPath); //给文件名加上路径 51 lstrcat(szFileName, p); //加上文件名 52 lstrcat(szFileName, TEXT("/n")); //换行 53 p += lstrlen(p) +1; //移至下一个文件54 }55 }56 MessageBox(NULL, szFileName, TEXT("MultiSelect"), MB_OK); 57 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。