自己写感觉比较好且使用的的函数 包括浏览目录以及 Slplit函数

简介: 自己写感觉比较好且使用的的函数 包括浏览目录以及 Slplit函数
int CALLBACK CQuer3080ImgDlg::BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
 if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
 {
  if(uMsg==BFFM_INITIALIZED)
  {
   ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
    LPARAM(lpData));
  }
 }
 return 0;
}
void CQuer3080ImgDlg::OnBnClickedBtnOpen()
{
 Invalidate();
 BROWSEINFO bi={0};
 bi.hwndOwner = this->GetSafeHwnd();
 bi.pidlRoot  = NULL;
 bi.lpszTitle = _T("请选择打开路径");
 bi.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
 bi.lpfn      = BrowseCallbackProc;
 bi.lParam    = (LPARAM)m_strPath.GetBuffer(m_strPath.GetLength());
 LPITEMIDLIST pIdl;
 if((pIdl = SHBrowseForFolder(&bi)) != NULL)
 {
  TCHAR path[MAX_PATH];
  SHGetPathFromIDList(pIdl,path);
  m_strTemplateInfoPath = path; 
  m_strPath=path;
  BOOL blValidate=ValidateFolderName(m_strTemplateInfoPath);
  if (!blValidate)
  {
   AfxMessageBox(_T("文件夹不正确"));
  }
  else
  {
   m_bGetFileData=TRUE;
   this->SetWindowText(_T("Query3080Img_")+m_strTemplateInfoPath);
   ReadImgTDRData(m_strTemplateInfoPath);
   ReadSliceData(m_strTemplateInfoPath);
   m_ImgStatic.SetImgData(g_dr_data_t.get());
   int nPos=GetDlgItemInt(IDC_EDT_SLICE);
   nPos=nPos*0.429+1;
   SetCTImg(nPos); 
   SetAactiveXStatus(TRUE);
   ((CComboBox*)GetDlgItem(IDC_CBO_DRIMG_DEAL))->SetCurSel(0);
   ((CComboBox*)GetDlgItem(IDC_CBO_CTIMG_DEAL))->SetCurSel(0);
  }
 } 
}
BOOL CQuer3080ImgDlg::ValidateFolderName(CString strPath)
{
 try
 {  
  CStringArray sa;
  int nCount=String2Array(strPath,sa,_T("//"));
  if (nCount<2)
  {
   return FALSE;
  }
  CString strLastName=sa.ElementAt(nCount-1);
  CString strPrevName=sa.ElementAt(nCount-2);
  if (strLastName.GetLength()!=6)
  {
   return FALSE;
  }
  if (strPrevName.GetLength()!=8)
  {
   return FALSE;
  }
  int nYear,nMonth,nDay,nHour,nMinute,nSecond;
  swscanf(strLastName,_T("%02d%02d%02d"),&nHour,&nMinute,&nSecond);
  swscanf(strPrevName,_T("%04d%02d%02d"),&nYear,&nMonth,&nDay);
  CTime   ct(nYear,   nMonth,   nDay,   nHour,   nMinute,   nSecond);  
  CString  str1  = ct.Format("%Y%m%d"); 
  CString  str2  = ct.Format("%H%M%S");
  if (str2==strLastName && str1==strPrevName)
  {
   return TRUE;
  }
  else
  {
   return FALSE;
  }
 } 
 catch (...)
 {
  return FALSE;
 }
 return TRUE;
}
int  CQuer3080ImgDlg::String2Array(const   CString&   s,   CStringArray   &sa,   CString   sSplitter)  
{  
 int   nLen=s.GetLength(),   nLastPos,   nPos;  
 bool   bContinue;  
 sa.RemoveAll();  
 nLastPos=0;  
 do  
 {  
  bContinue=false;  
  nPos   =   s.Find(sSplitter,   nLastPos);  
  if   (-1!=nPos)  
  {  
   sa.Add(s.Mid(nLastPos,   nPos-nLastPos));  
   nLastPos=nPos+1;  
   if   (nLastPos   !=   nLen)   bContinue=true;  
  }  
 }   while   (bContinue);  
 if   (nLastPos   !=   nLen)  
  sa.Add(s.Mid(nLastPos,   nLen-nLastPos));  
 return   sa.GetSize();  
}
相关文章
|
2月前
|
XML 数据格式
熟练使用浏览目录类命令
熟练使用浏览目录类命令。
50 2
|
2月前
|
定位技术 Python
Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件
Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件
|
2月前
|
存储 定位技术 Python
批量将文件名称符合要求的文件自动复制到新文件夹:Python实现
批量将文件名称符合要求的文件自动复制到新文件夹:Python实现
|
2月前
markdown增加目录索引,实现点击目录跳转到对应的内容目录标题
markdown增加目录索引,实现点击目录跳转到对应的内容目录标题
123 0
|
7月前
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
46 0
|
存储 JSON 安全
electron如何自定义目录,修改文件名保存下载的网络文件
很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。
electron如何自定义目录,修改文件名保存下载的网络文件
|
前端开发
前端上传文件保存到变量中
前端上传文件保存到变量中
前端上传文件保存到变量中
DEDECMS织梦更改include目录重命名后,后台属性编辑无法加载的解决方法
织梦dedecms是新手站长使用得比较多的一个建站开源程序,正因如此,也是被被入侵挂马比较多的程序。下面就来跟大家说一下重新命名dedecms的include文件夹后后台属性编辑无法加载的问题
DEDECMS织梦更改include目录重命名后,后台属性编辑无法加载的解决方法
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
373 0
BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示