void CWriteWnd::OpenFileDialog()
{
OPENFILENAME ofn;
TCHAR szOpenFileNames[*MAX_PATH] = _T("");
TCHAR szPath[MAX_PATH];
TCHAR szFileName[*MAX_PATH]; TCHAR* p;
int nLen = ;
ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = *this;
ofn.lpstrFile = szOpenFileNames;
ofn.nMaxFile = sizeof(szOpenFileNames);
ofn.lpstrFilter = _T("自设文件类型(*.*)\0*.*\0所有文件(*.*)\0*.*\0\0") ;
ofn.nFilterIndex = ;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = ;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST |OFN_ALLOWMULTISELECT; if( GetOpenFileName( &ofn ) )
{
//把第一个文件名前的复制到szPath,即:
//如果只选了一个文件,就复制到最后一个'/'
//如果选了多个文件,就复制到第一个NULL字符
lstrcpyn(szPath, szOpenFileNames, ofn.nFileOffset ); //当只选了一个文件时,下面这个NULL字符是必需的.
//这里不区别对待选了一个和多个文件的情况 szPath[ ofn.nFileOffset ] = '\0';
nLen = lstrlen(szPath); if( szPath[nLen-] != '\\' ) //如果选了多个文件,则必须加上'\\'
{
lstrcat(szPath, TEXT("\\"));
} p = szOpenFileNames + ofn.nFileOffset; //把指针移到第一个文件 while( *p )
{
ZeroMemory(szFileName, sizeof(szFileName));
lstrcat(szFileName, szPath); //给文件名加上路径
lstrcat(szFileName, p); //加上文件名
lstrcat(szFileName, TEXT("/n")); //换行
p += lstrlen(p) +; //移至下一个文件
}
}
MessageBox(NULL, szFileName, TEXT("MultiSelect"), MB_OK);
}