【C++基本功补习】定时器使用及文件路径提取

来源:互联网 发布:尼泊尔弯刀淘宝 编辑:程序博客网 时间:2024/05/16 15:30

1. 定时器的使用

   SetTimer(1, 1000, NULL); //启动定时器1, 定时1000毫秒, 使用默认的处理函数 OnTimer()

   KillTimer(1);        //关闭定时器1

处理函数的实现

[cpp] view plaincopyprint?
  1. void CMFCView::OnTimer(UINT_PTR nIDEvent)  // <span style="font-family: Arial, Helvetica, sans-serif;">CMFCView 这个可以根据项目需要变更的,它只是表明一个归属</span>  
  2.   
  3. {  
  4.     // TODO: 在此添加消息处理程序代码和/或调用默认值  
  5.     switch(nIDEvent)  
  6.     {  
  7.         case 1:  
  8.         {  
  9.             //AfxMessageBox("Timer is running!");//定时器时间到,强出一对话框,表明定时器已经运行。  
  10.             ImgProController();  //定时处理图像  
  11.             break;  
  12.         }  
  13.           
  14.         case 2:  
  15.         {  
  16.               
  17.             break;  
  18.         }  
  19.         default:  
  20.         {  
  21.             break;  
  22.         }  
  23.           
  24.     }  
  25.     CFormView::OnTimer(nIDEvent);  // <span style="font-family: Arial, Helvetica, sans-serif;">CFormView 这个类不能动</span>  
  26.   
  27. }  

使用起来非常方便和简单,但想要它运作起来,还有两个重要点必需打通:

A,在相应的类的头文件public:下声明    afx_msg void OnTimer(UINT_PTR nIDEvent);

B,消息映射表中应当添加 ON_WM_TIMER()  , 格式上独占一行

由于好久没有使用,一时间又记不全,百度好久之后才通过类向导的方式查出问题所在,故此,记录在案,以绝后患!!!


2. 文件路径提取

推荐 使用 CFileDialog 类重写 自带的“打开”方法,更能精确控制对话框,也方便后续提取文件路径和文件名

[cpp] view plaincopyprint?
  1. CFileDialog dlg(  
  2.         TRUE,  NULL ,NULL,  
  3.         OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, // OFN_NOCHANGEDIR 是指不变更当前exe工作默认目录  
  4.         "图像 (*.jpg; *.png)|*.jpg; *.png|视频 (*.avi; *.mp4)|*.avi; *.mp4|所有文件 (*.*)|*.*||"// 可供选择项目约束,注意组合方式  
  5.         NULL);    
  6.     //文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。                                      
  7.       
  8.     dlg.m_ofn.lpstrTitle = _T("请选择 图像 或者 视频文件");    // 打开文件对话框的标题名  
  9.     if( dlg.DoModal() != IDOK )                 // 判断是否获得图片  
  10.         return;  



        CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt 
        CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt 
        CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt 
        CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1 


GetFilePath()函数,是获取打开文件的路径的函数 
GetCurrentDirectory 相对路径,随时会变

如果是工作路径, 用GetWorkingDirectory
如果是当前可执行程序, 用GetModuleFileName(NULL, p, size) 应用的绝对路径,基本不变

HMODULE module = GetModuleHandle(0); 
CHAR buf[MAX_PATH]; 
GetModuleFileName(module, buf, sizeof buf);


此文章来自于【http://blog.csdn.net/zfdxx369/article/details/9043739】

原创粉丝点击