CFileDialog用法

来源:互联网 发布:网络销售公司有些什么 编辑:程序博客网 时间:2024/05/21 10:26

 读取单幅图像

 

 

TCHAR szFilter[] = _T("图像数据(*.raw)|*.raw|所有文件(*.*)|*.*||");   

 CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   

 CString strFilePath;  
 CString strFileName;
 FILE *fp;
 char    acfilename[100] = {0};

 CString dir;
 dir = PublicObject.GetCurrWorkingDir();

 if(PublicObject.GetDR())
 {
  dir = dir+L"\\CMTCInput\\DR_MTF\\";
 }
 else
 {
  dir = dir+L"\\CMTCInput\\Mammo_MTF\\";
 }
 fileDlg.m_ofn.lpstrInitialDir = dir;

 if (IDOK == fileDlg.DoModal())   
 {   
  strFilePath = fileDlg.GetPathName(); 
  strFileName = fileDlg.GetFileTitle();
  if( (strFileName.Compare(L"AAA_Img")) == 0)      {
     m_isVerticalImage = false;
  }
  if( (strFileName.Compare(L"AAA")) == 0)   
  {
   m_isVerticalImage = true;
  }
  SetDlgItemText(IDC_EDIT_VERTICAL, strFilePath);   
  m_isVLoadOk = true;
 }  
 int nImageWith = PublicObject.GetImageWidth();
 int nImageHigh = PublicObject.GetImageHigh();
 std::fstream file(strFilePath,std::ios::in|std::ios::out|std::ios::binary);
 file.read((char*)PublicObject.m_pBImageMTFVertical,nImageWith*nImageHigh*2);
 file.close();

 

读取多福图像

// TODO: Add your control notification handler code here
 CString pathName,fileName; 
 CFileDialog fileDialog = CFileDialog(true, NULL, NULL, OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY,
  L"raw Files (*.raw)|*.raw|All Files (*.*)|*.*||",this);

//  设置默认的开打文件夹
 CString dir;
 CString DoseDir;
 dir = PublicObject.GetCurrWorkingDir();
 DoseDir = PublicObject.GetCurrWorkingDir();
 if(PublicObject.GetDR())
 {
  dir = dir+L"\\CMTCInput\\DR_TF\\";
  DoseDir = dir +L"TF_Dose.txt";
 }
 else
 {
  dir = dir+L"\\CMTCInput\\Mammo_TF\\";
  DoseDir = dir + L"TF_Dose.txt";
 }
 fileDialog.m_ofn.lpstrInitialDir = dir;
// 

 if (fileDialog.DoModal() == IDOK)
 {
  CString strPath = fileDialog.GetPathName();
 }
 POSITION pos_file; 
 pos_file = fileDialog.GetStartPosition(); 
 FILE *fp = NULL;
 CArray<CString, CString> ary_filename; 
 char    acfilename[100] = {0};
 int i = 0;
 int nImageWith = PublicObject.GetImageWidth();
 int nImageHigh = PublicObject.GetImageHigh();
 
 while(pos_file != NULL)
 { 
    pathName = fileDialog.GetNextPathName(pos_file); 
  std::fstream file(pathName,std::ios::in|std::ios::out|std::ios::binary);
  file.read((char*)PublicObject.m_pbArrayTF[i],nImageWith*nImageHigh*2);
  file.close();
  
//用于测试
//   CString str("D:\\TF.raw");
//   std::ofstream fppp(str,std::ios::out|std::ios::binary);
//   fppp.write((char*)PublicObject.m_pbArrayTF[i],nImageWith*nImageHigh*2);
//   fppp.close();
  i++;
 }
 if( i!=5 )
 {
  for(int i=0;i<5;i++)
  {
   memset(PublicObject.m_pbArrayTF[i],0x00,nImageWith*nImageHigh*2);
  }
  return;
 }
 SetDlgItemText(IDC_EDIT_TF_FILE, pathName);   

 string str;
 
 int num,len;
 vector<string> vecstr;
 fstream fin(DoseDir,std::ios::in);
 if(!fin)    
 {         
  MessageBox(L"TF_Dose.txt 丢失");
 } 
 num = 0;
 
 while(getline(fin, str))  
 {           
  vecstr.push_back(str);
 }
 if( vecstr.size() == 5)
 {
  for(int i=0;i<vecstr.size();i++)
  {
   PublicObject.m_arrayNPSArgument[i] =atof(vecstr[i].c_str());
  }
 }else
 {
  MessageBox(L"请修改 TF_Dose.txt为5行");
 }

 

原创粉丝点击