MFC程序总结

一、MFC 获取系统时间
GetCurrentTime
  GetCurrentTime函数可以用来获取系统时间,用于VC编程。
使用方法
  在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
  CTime t = CTime::GetCurrentTime(); //获取系统日期
  int d=t.GetDay(); //获得几号
  int y=t.GetYear(); //获取年份
  int m=t.GetMonth(); //获取当前月份
  int h=t.GetHour(); //获取当前为几时
  int mm=t.GetMinute(); //获取分钟
  int s=t.GetSecond(); //获取秒
  int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
  如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:
  CTime t1( 1999, 3, 19, 22, 15, 0 );
     CTime t = CTime::GetCurrentTime();
     CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔
  int iDay=span.GetDays(); //获取这段时间间隔共有多少天
  int iHour=span.GetTotalHours(); //获取总共有多少小时
  int iMin=span.GetTotalMinutes();//获取总共有多少分钟
  int iSec=span.GetTotalSeconds();//获取总共有多少秒
  或者,获得当前日期和时间,并可以转化为 CString
  CTime tm=CTime::GetCurrentTime();

     CString str=tm.Format("%Y-%m-%d");//显示年月日

     CString str=tm.Format("%Y-%m-%d %H:%M:%S");//显示年月日


获取系统时间
time_t t = time(NULL);//1970年1月1日0点到现在多少秒
char *ctime(const time_t *clock);//将秒数转化为字符串
//或
CTime::GetCurrentTime(),
GetSystemTime()

 

二、关于COleDateTime 和 CString的互相转换问题

从COleDateTime转换成CString

例如:

COleDateTime time = COleDateTime::GetCurrentTime();
CString CStime=time.Format( "%Y-%m-%d %H:%M:%S ");

从CString 转换成 COleDateTime

例如:

CString CStime("2001-8-29 19:06:23");
int nYear, nMonth, nDate, nHour, nMin, nSec;
sscanf(CStime, "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);
time.setFotmat(nYear, nMonth, nDate, nHour, nMin, nSec);

 

 

在MFC下要实现文件夹的递归遍历,可用CFileFind类,依次读取文件夹下的子文件夹和文件,并判断通过判断是文件夹还是文件来决定递归遍历(事实上,CFileFind本身还可以判断文件具体属于哪种类型,例如压缩文件、系统文件等)。另外要注意,遍历过程中会读到"."文件和".."文件,可通过fileFinder.IsDots()函数识别。

 

 

相关代码:

//Bayes测试函数(递归)

void CTestPage::BayesCategoryTest(BayesTest* bt, CString tp)

{

       CFileFind fileFinder;

       CString filePath = tp + _T("//*.*");

      

       BOOL bFinished = fileFinder.FindFile(filePath);

       while(bFinished)  //每次循环对应一个类别目录

       {

              bFinished = fileFinder.FindNextFile();

              if(fileFinder.IsDirectory() && !fileFinder.IsDots())  //若是目录则递归调用此方法

              {

                     BayesCategoryTest(bt, fileFinder.GetFilePath());

              }

              else  //再判断是否为txt文件

              {

                     //获取文件类型

                     CString fileName = fileFinder.GetFileName();

                     int dotPos=fileName.ReverseFind('.');

                     CString fileExt=fileName.Right(fileName.GetLength()-dotPos);

                     if(fileExt == _T(".txt"))  //若是txt文件则开始分类测试

                     {

                            CString category = fileName.Left(fileName.GetLength()-8);  //应属类

                            CString result = bt->StartTest(fileFinder.GetFilePath());  //所分类                        

                            int n = m_ListCtrl.GetItemCount();

                            m_ListCtrl.InsertItem(n, fileName,0);// 插入为第n行第一列的内容:文件名

                            m_ListCtrl.SetItemText( n,1, category) ; // 设置第n行第列的内容:应属类

                            m_ListCtrl.SetItemText(n,2, result) ; // 设置第n行第列的内容:所分类

                            if(category == result)

                                   m_ListCtrl.SetItemText(n,3, _T("Correct!")) ;  //判断正确

                            else

                                   m_ListCtrl.SetItemText(n,3, _T("Wrong!")) ;  //判断错误

                     }

              }

       }

       fileFinder.Close();

}

 

关于程序添加背景图片的方法!

此文系转载,忘了博客地址了
VC++中如何给对话框加背景图片(2010-03-22 16:57:59)

方法一:

1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp);

3、重载对话框的OnCtlColor,改最后的返回值:

1
return (HBRUSH)m_brush;

方法二:

把下面这段代码加进OnPaint()里就行了

CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);

方法三:使用StretchBlt()函数,具有图像自适应窗体功能

CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
posted @ 2012-10-27 12:37  Lxsec  阅读(440)  评论(0编辑  收藏  举报