VS2010 使用 CFileDialog 选择文件

VS2010 使用 CFileDialog 选择文件

1、仅能选择单个文件
 // TODO: Add your control notification handler code here
 CFileDialog findFileDlg(TRUE,  // TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
      ".h264",  // 默认的打开文件的类型
      m_nowPlayFilePath,  // 默认打开的文件名
      OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,  // 打开只读文件
      "视频文件(*.h264)|*.h264|所有文件 (*.*)|*.*||"  // 所有可以打开的文件类型
      ); 
// findFileDlg.GetOFN().lpstrInitialDir=strFile.c_str();// 默认目录
 if(IDOK==findFileDlg.DoModal())  
 {
  char tempBuff[1024];
  int index=0, startPos=0, playTime, iSum, findFlag=0, iChn=0;
  CString m_FilePath=findFileDlg.GetPathName();  // 取出文件路径   
}
 
2、能选择多个文件
tempOpenDir=g_CurRunDir+"\\";  // g_CurRunDir为程序运行所在文件夹
 TRACE("cur default open dir: %s\n", tempOpenDir);
 
 // 打开选择文件的窗口并记录选定的文件
 char *pFPBuff=NULL;  // 文件路径存储空间
 int nMaxFiles=32;  // 最多运行选择的文件数目
 CFileDialog findFileDlg(TRUE,  // TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
  ".bmp",  // 默认的打开文件的类型
  "", // 默认打开的文件名  tempOpenDir
  OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_HIDEREADONLY,  // 打开只读文件 |OFN_OVERWRITEPROMPT
  "BMP图片(*.bmp)|*.bmp|所有文件 (*.*)|*.*||"  // 所有可以打开的文件类型
  );
 // 最多可以打开个文件 
 findFileDlg.m_ofn.nMaxFile=nMaxFiles*MAX_PATH;  // 所选文件路径总长度最大值
 pFPBuff=new TCHAR[findFileDlg.m_ofn.nMaxFile+16];
 if (NULL==pFPBuff)
 {
  return;
 }
 else
 {
  // 对内存块清零 
  memset(pFPBuff, 0, sizeof(TCHAR)*findFileDlg.m_ofn.nMaxFile+16); 
 }
 findFileDlg.m_ofn.lpstrFile=pFPBuff; 
findFileDlg.m_ofn.lpstrTitle="打开文件";
 findFileDlg.m_ofn.lpstrInitialDir=tempOpenDir.GetBuffer(0);  // 设置默认路径
 
 iRes=findFileDlg.DoModal();
 if (IDOK==iRes)
 {
  // 获取第一个文件的位置 
  POSITION pos_file; 
  CString pathName, fileName;
  pos_file = findFileDlg.GetStartPosition();
  if (NULL==pos_file)
  {
   TRACE("On Bn Clicked Btn Add, pos file is NULL\n");
  }
  // 循环读出每个路径并存放在数组中 
  while(NULL!=pos_file)
  {
   // 获取文件路径和名称
   pathName=findFileDlg.GetNextPathName(pos_file);
   // 获取文件名  
   // 从字符串的后面往前遍历,如果遇到'\'则结束遍历,'\'右边的字符串则为文件名 
   int iIndex, length=pathName.GetLength();       
   for (iIndex=length-1; iIndex>0; iIndex--)
   {
    if ('\\'==pathName.GetAt(iIndex))
    {
     // 判断当前字符是否是'\'
     fileName=pathName.Right(length-iIndex-1);
     break; // 跳出循环
    } 
   }
   TRACE("cur sel file path: %s\n", pathName);
   InsertSelFileIntoList(fileName, pathName);
  }  
 }
 else
 {
  TRACE("On Bn Clicked Btn Add, cancel btn is pressed, iRes: %d\n", iRes);
 }
 
 delete [] pFPBuff;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值