用CFileDialog同时打开多文件
  9aGNI37h2JhV 2023年11月02日 44 0

//用CFileDialog同时打开多文件,方式1和方式2

CString strFilter = _T("所有支持的视频文件|*.ts;*.mp4;*.flv|MPEG-2 视频文件|*.ts|MPEG-4 视频文件|*.mp4|Adobe Flash Video|*.flv|其他文件类型|*.*||");

CFileDialog dlg(TRUE, _T(""), _T(""), OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY, strFilter);


// Create buffer for file names.

const DWORD numberOfFileNames = 100;

const DWORD fileNameMaxLength = MAX_PATH + 1;

const DWORD bufferSize = (numberOfFileNames * fileNameMaxLength) + 1;

TCHAR* filenamesBuffer = new TCHAR[bufferSize];


// Initialize beginning and end of buffer.

filenamesBuffer[0] = NULL;

filenamesBuffer[bufferSize - 1] = NULL;

memset(filenamesBuffer, 0, sizeof(TCHAR)* bufferSize);


// Attach buffer to OPENFILENAME member.

dlg.m_ofn.lpstrFile = filenamesBuffer;

dlg.m_ofn.nMaxFile = bufferSize;

// Create array for file names.

CString fileNameArray[numberOfFileNames];

if (dlg.DoModal() == IDOK)

{

// Retrieve file name(s).

POSITION fileNamesPosition = dlg.GetStartPosition();

int iCtr = 0;

while (fileNamesPosition != NULL && iCtr < numberOfFileNames)

{

 fileNameArray[iCtr] = dlg.GetNextPathName(fileNamesPosition);

 //其中fileNameArray[iCtr] 中为路径地址

 iCtr++;

}

}

//------------------------------------------------------------------------

// 上述方式一不能满足搜索不同目录下同时打开多个文件的需求


//方式二,此方式解决不同目录下同时打开多个文件获取文件路径的需求

//========================================================================

CString strFilter = _T("所有支持的视频文件|*.ts;*.mp4;*.flv|MPEG-2 视频文件|*.ts|MPEG-4 视频文件|*.mp4|Adobe Flash Video|*.flv|其他文件类型|*.*||");

CFileDialog OpenDialog(TRUE, _T(""), _T(""), OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY, strFilter);

if (OpenDialog.DoModal() == IDOK)

{

CString path;

IShellItemArray* pResult = OpenDialog.GetResults();

DWORD dwCount = 0;

IShellItem* pItem;

WCHAR* pFilePath;

pResult->GetCount(&dwCount);

for (DWORD i = 0; i < dwCount; i++)

{

 pResult->GetItemAt(i, &pItem);

 pItem->GetDisplayName(SIGDN_FILESYSPATH, &pFilePath);//其中pFilePath为目标文件的绝对路径

}

}

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  anLrwkgbyYZS   2023年12月30日   33   0   0 ideciciMaxideMax
9aGNI37h2JhV