VC6.0中CFileDialog怎么选择多个文件?
在VC6.0中使用CFileDialog类时,怎么设定选择多个文件?谢谢!
在VC6.0中使用CFileDialog类时,怎么设定选择多个文件?谢谢!
答案:下面代码,可以选择文件夹,但是不能选文件
需要自己查找文件
char* GetPath(HWND hWnd,char* pBuffer)
{
BROWSEINFO bf;
LPITEMIDLIST lpitem;
memset(&bf,0,sizeof BROWSEINFO);
bf.hwndOwner=hWnd;
bf.lpszTitle= "选择路径";
bf.ulFlags=BIF_RETURNONLYFSDIRS; //属性你可自己选择
lpitem=SHBrowseForFolder(&bf);
if(lpitem==NULL) //如果没有选择路径则返回 0
return 0;
//如果选择了路径则复制路径,返回路径长度
SHGetPathFromIDList(lpitem,pBuffer);
return pBuffer;
}
----------------------------------------------------
或者
#include "cderr.h " //for definition of FNERR_BUFFERTOOSMALL
CFileDialog dlg( TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL );
DWORD MAXFILE = 4000
dlg.m_ofn.nMaxFile = MAXFILE;
char* pc = new char[MAXFILE];
dlg.m_ofn.lpstrFile = pc;
dlg.m_ofn.lpstrFile[0] = NULL;
int iReturn = dlg.DoModal();
if(iReturn == IDOK)
{
int nCount = 0;
POSITION pos = dlg.GetStartPosition();
while (pos != NULL)
{
dlg.GetNextPathName(pos);
nCount++;
}
CString str;
str.Format( "Successfully opened %d files\n ", nCount);
AfxMessageBox(str);
}
else if(iReturn == IDCANCEL)
AfxMessageBox( "Cancel ");
if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL)
AfxMessageBox( "BUFFERTOOSMALL ");
delete []pc;
--------------------
第二个代码没测试过,不知道好不好使
都是找的
其他:需要指定OFN_ALLOWMULTISELECT:
#define DLG_FILTER "txt Files (*.txt)|*.txt|| "
#define DLG_EXT "txt "
CFileDialog dlg(TRUE, _T(DLG_EXT), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, _T(DLG_FILTER));
if (dlg.DoModal() == IDOK)
{
POSITION pos = dlg.GetStartPosition();
while (pos != 0)
{
CString s = dlg.GetNextPathName(pos);
}
}
上一个:怎么使用VC++6.0的MFC-DIALOG实现点击窗口的一个新建BUTTON打开并显示电脑上的一个txt文本文档
下一个:VC6.0中两整数相除,它的余数是怎么处理?