MFC常用类-CTimeSpan类
CTimeSpan类

CTimeSpan
CTimeSpan没有基类。
一个CTimeSpan对象代表一个相对的时间段。
CTimeSpan引入了ANSI time_t数据及与之相关的运行时函数。
这些函数将秒转换为日,时,分和秒的各种组合。
一个CTimeSpan对象以秒为单位保存时间。
由于CTimeSpan对象以带符号的四字节数存储,所以最大的时间跨度近似为+-68年。
另外一个与CTimeSpan对应的类是CTime,它描述的是绝对时间。
CTimeSpan是两个CTime对象之间的差。
CTime和CTimeSpan类不可派生。
因为没有虚函数,所以CTime和CTimeSpan对象的大小都正好是四字节。
大多数成员函数都是内联函数。
有关使用CTime的更多信息,参见“Visual C++程序员指南”中的文章“日期和时间”,以及“Microsoft Visual C++ 6.0参考库”的“Microsoft Visual C++ 6.0运行时库参考”卷中的“时间管理”。
#include <afx.h>
请参阅:
Run-time functions: asctime, _ftime, gmtime, localtime, strftime, time
CTimeSpan类成员。
mfc程序中字符串类型

mfc程序中字符串类型MFC程序中字符串类型: 了解CString类及其使用方法【引言】在MFC程序开发中,字符串类型是必不可少的。
字符串在程序中通常用于存储和操作文本数据。
MFC提供了一个强大而方便的字符串类CString,它能够简化字符串的操作并提供了许多有用的方法。
本篇文章将逐步介绍CString类及其使用方法,帮助读者更好地使用字符串类型。
【正文】一、CString类简介CString是MFC中提供的用于字符串操作的高级类。
它是对传统C语言字符串进行了封装,提供了更加方便、安全和高效的字符串操作方法。
CString类内部使用了动态内存管理技术,能够根据实际需要自动调整字符串长度。
在使用CString类之前,我们需要包含头文件`<afxwin.h>`。
二、创建CString对象使用CString类首先需要创建一个CString对象,可以通过以下几种方式进行创建:1. 无参构造函数:`CString str;`这种方式创建的CString对象没有初始值,需要在后续使用中进行赋值操作。
2. 带参构造函数:`CString str("Hello World");`这种方式创建的CString对象包含了初始化的字符串值。
三、字符串操作方法CString类提供了许多方便的方法来进行字符串操作,下面我们逐一介绍其中常用的几种方法:1. 获取字符串长度:`int len = str.GetLength();`这个方法用于获取CString对象存储的字符串的长度。
2. 字符串拼接:`str += " MFC";`通过重载的`+=`运算符,可以将两个字符串进行连接操作,将一个字符串附加在另一个字符串的后面。
3. 字符串比较:`int result = pare("Hello MFC");`使用Compare方法可以对两个字符串进行比较,并返回比较结果。
mfc 知识点总结

mfc 知识点总结MFC库的基本组成包括以下几个部分:1. CObject类:是所有MFC类的基类,提供了对象的基本功能,包括内存管理、类型信息、对象的打印和序列化等。
2. CWnd类:是窗口类的基类,封装了Windows窗口的创建、显示、消息处理等功能。
3. CFrameWnd类:是框架窗口类,派生自CWnd类,封装了应用程序的主窗口,提供了菜单、工具栏、状态栏等UI组件。
4. CDocument类和CView类:分别是文档类和视图类,用于管理应用程序中的文档和视图。
文档类负责文档的打开、保存、关闭等操作,视图类负责文档内容的显示和交互。
5. CWinApp类:是应用程序类的基类,封装了应用程序的初始化、消息循环、资源管理等功能。
MFC库提供了丰富的类和函数,用于处理Windows应用程序的各个方面,下面将对MFC的一些重要知识点进行总结。
1. 消息处理在MFC应用程序中,窗口的消息处理是至关重要的。
MFC提供了消息映射机制来进行消息处理。
通过DECLARE_MESSAGE_MAP宏和BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 宏,在类中声明消息处理函数并将消息与处理函数进行映射。
例如:```cpp// 声明消息处理函数afx_msg void OnMouseMove(UINT nFlags, CPoint point);// 映射消息到处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)ON_WM_MOUSEMOVE()END_MESSAGE_MAP()```2. 对话框对话框是Windows应用程序中常用的界面元素,用于与用户进行交互。
MFC提供了CDialog类和CDialogEx类来封装对话框。
开发者可以使用资源编辑器创建对话框模板,然后通过类向导生成对话框类。
对话框类中可以处理控件的事件,并通过DoModal函数或Create函数来显示对话框。
CImage的一般使用方法和技巧

我们知道,Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。
因此,想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控件或代码。
现在,MFC和ATL共享的新类CImage为图像处理提供了许多相应的方法,这使得Visual C++在图像方面的缺憾一去不复返了。
CImage类概述CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示,而且这些文件格式可以相互转换。
由于CImage在不同的Windows操作系统中其某些性能是不一样的,因此在使用时要特别注意。
例如,CImage::PlgBlt和CImage::MaskBlt只能在Windows NT 4.0 或更高版本中使用,但不能运行在Windows 95/98 应用程序中。
CImage::AlphaBlend和CImage::TransparentBlt也只能在Windows 2000/98或其更高版本中使用。
即使在Windows 2000运行程序还必须将stdafx.h文件中的WINVER和_WIN32_WINNT的预定义修改成0x0500才能正常使用。
CImage封装了DIB(设备无关位图)的功能,因而可以让我们能够处理每个位图像素。
它具有下列最酷特性:1、AlphaBlend支持像素级的颜色混合,从而实现透明和半透明的效果。
2、PlgBlt能使一个矩形区域的位图映射到一个平行四边形区域中,而且还可能使用位屏蔽操作。
3、TransparentBlt在目标区域中产生透明图像,SetTransparentColor用来设置某种颜色是透明色。
4、MaskBlt在目标区域中产生源位图与屏蔽位图合成的效果。
使用CImage的一般方法使用CImage的一般方法是这样的过程:(1) 打开应用程序的stdafx.h文件添加CImage类的包含文件:#include <atlimage.h>(2) 定义一个CImage类对象,然后调用CImage::Load方法装载一个外部图像文件。
VS2010和MFC编程入门之42(MFC常用类:CString类)

VS2010MFC编程入门之四十二(MFC常用类:CString类)理解了分割窗口的有关知识,这里开始讲解MFC的一些常用类,先来说说CString类。
CString类简介CString类作为MFC的常用类,当之无愧。
可以这样说,只要是从事MFC开发,基本都会遇到使用CString类的场合。
因为字符串的使用比较普遍,而CString类又提供了对字符串的便捷操作,所以它给MFC开发人员带来了高的开发效率,受到了开发者的欢迎。
大家使用VS2010的话,可能会见到CStringT,实际上它是一个操作可变长度字符串的模板类。
CStringT模板类有三个实例:CString、CStringA和CStringW,它们分别提供对TCHAR、char和wchar_t字符类型的字符串的操作。
char类型定义的是Ansi字符,wchar_t类型定义的是Unicode字符,而TCHAR取决于MFC工程的属性对话框中的Configuration Properties->General->Character Set属性,如果此属性为Use Multi-Byte Character Set,则TCHAR类型定义的是Ansi字符,而如果为Use Unicode Character Set,则TCHAR类型定义的是Unicode字符。
三个字符串类的操作是一样的,只是处理的字符类型不同。
鸡啄米以CString类为讲解对象。
CString类的字符串操作1. CString类的构造函数CString类有很多构造函数,这里只介绍几个比较常用的:CString(constCString&stringSrc);将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。
例如:C++代码CString str1(_T("")); // 将常量字符串拷贝到str1 CString str2(str1); // 将str1的内容拷贝到str2CString(LPCTSTR lpch, intnLength);将字符串lpch中的前nLength个字符拷贝到该CString对象。
C语言获取当前系统时间的几种方式

C语言中如何获取时间?精度如何?1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精确到毫秒5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒6 要获取高精度时间,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。
7 Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime//*********************************************************************//用标准C实现获取当前系统时间的函数一.time()函数time(&rawtime)函数获取当前时间距1970年1月1日的秒数,以秒计数单位,存于rawtime 中。
#include "time.h"void main (){time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "\007The current date/time is: %s", asctime (timeinfo) );exit(0);}=================#include -- 必须的时间函数头文件time_t -- 时间类型(time.h 定义是typedef long time_t; 追根溯源,time_t是long)struct tm -- 时间结构,time.h 定义如下:int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;time ( &rawtime ); -- 获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); -- 转为当地时间,tm 时间结构asctime ()-- 转为标准ASCII时间格式:星期月日时:分:秒年-----------------------------------------------------------------------------二.clock()函数,用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。
mfc计算时间差

mfc计算时间差MFC是Microsoft Foundation Class的缩写,是微软公司为Windows操作系统开发的一套类库。
它提供了丰富的功能和工具,方便开发人员快速搭建Windows应用程序。
在MFC中,我们可以使用CDateTime类来计算时间差。
计算时间差是指计算两个时间点之间的时间间隔。
在实际开发中,我们经常需要计算两个时间点之间的时间差,比如计算某个任务的执行时间,或者计算两个事件的间隔时间等。
MFC提供了一系列的函数和方法来实现时间差的计算。
我们需要获取两个时间点的值。
在MFC中,可以通过CDateTime 类来表示一个时间点。
CDateTime类提供了获取当前时间的方法,可以使用GetTime方法获取当前时间的值。
例如,下面的代码可以获取当前时间的值:```cppCDateTime currentTime;currentTime.GetTime();```获取时间差的方法有很多种,下面介绍其中一种常用的方法。
我们可以使用COleDateTime类来表示一个时间点,并使用COleDateTimeSpan类来表示两个时间点之间的时间间隔。
COleDateTime类提供了从CDateTime类获取时间值的方法,可以使用GetTime方法获取时间值。
COleDateTimeSpan类提供了计算时间差的方法,可以使用COleDateTimeSpan的构造函数来计算时间差。
例如,下面的代码可以计算两个时间点之间的时间差:```cppCDateTime startTime;CDateTime endTime;// 获取开始时间和结束时间的值startTime.GetTime();endTime.GetTime();// 计算时间差COleDateTimeSpan timeSpan(endTime - startTime);// 获取时间差的各个部分int hours = timeSpan.GetHours();int minutes = timeSpan.GetMinutes();int seconds = timeSpan.GetSeconds();```上述代码中,我们首先获取开始时间和结束时间的值,然后使用COleDateTimeSpan类的构造函数计算时间差,最后使用COleDateTimeSpan类的GetHours、GetMinutes和GetSeconds方法获取时间差的小时、分钟和秒数。
mfc 时间转换函数

mfc 时间转换函数MFC 时间转换函数在MFC 编程中,时间转换函数是非常常用的一个功能。
它可以将不同的时间格式相互转换,方便开发者在不同场景下使用。
一、将字符串转换为时间格式在实际开发中,我们经常会遇到将字符串转换为时间格式的需求。
比如,从用户输入的日期字符串中获取具体的年、月、日等信息。
这时,可以使用 MFC 提供的函数 CString::Format 进行转换。
例如,我们有一个日期字符串"2021-01-01",我们想要获取其中的年份。
可以使用以下代码实现:```cppCString strDate = "2021-01-01";int nYear = 0;sscanf_s(strDate, "%d", &nYear);```这样,变量nYear 就存储了字符串中的年份值。
同样的道理,我们也可以获取月份和日期的值。
二、将时间格式转换为字符串除了将字符串转换为时间格式,有时我们还需要将时间格式转换为字符串,以便于展示给用户或保存到文件中。
MFC 提供了一系列的格式化输出函数,可以方便地实现这个功能。
例如,我们有一个时间变量dt,表示当前的日期和时间。
我们可以使用以下代码将其转换为字符串:```cppCTime dt = CTime::GetCurrentTime();CString strDate = dt.Format("%Y-%m-%d");```这样,strDate 就存储了当前日期的字符串表示,格式为"2021-01-01"。
三、其他时间转换函数除了上述的字符串转换函数,MFC 还提供了一些其他的时间转换函数,用于处理更复杂的时间操作。
比如,CTimeSpan 类可以用来计算两个时间之间的时间间隔,CTime 类提供了一些日期和时间的基本操作。
四、总结MFC 时间转换函数是开发中经常使用的功能之一,能够方便地实现字符串和时间格式之间的相互转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CTimeSpan类
1.构造函数。
CTimeSpan类有下列构造函数:
(1)CTimeSpan();
(2)CTimeSpan(const CTimeSpan& timeSpanSrc );
(3)CTimeSpan(time_t time );
(4)CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs );
参数timeSpanSrc为一个已存在的CTimeSpan 对象,time为一个time_t 类型的时间值,lDays, nHours, nMins, nSecs分别为天数、小时数、
分数和秒数。
2.时间值的提取函数
(1)GetDays()获得CTimeSpan类对象中包含的完整的天数。
(2)GetHours()获得当天的小时数,值在-23到23之间。
(3)GetTotalHours()获得CTimeSpan类对象中包含的完整的小时数。
(4)GetMinutes()获得当前小时包含的分数,值在-59到59之间。
(5)GetTotalMinutes()获得CTimeSpan类对象中包含的完整的分数。
(6)GetSeconds()获得当前分钟包含的秒数,值在-59到59之间。
(7)GetTotalSeconds()获得CTimeSpan类对象中包含的完整的秒数。
格式化时间
Format()将一个CTimeSpan对象转换成格式字符串。
使用方式与CTime类似,格式化字符包括以下几个:
%D: CTimeSpan的总天数;
%H:不足整天的小时数;
%M:不足1小时的分数;
%S:不足1分钟的秒数;
%%:百分号。
4.重载运算符
CTimeSpan类也重载了运算符“=”,“+”,“-”,“+=”,“-=”,“==”,“!=”,“<”,“>”,“<=”,“>=”,用于CTimeSpan对象的赋值、加减运
算及两个CTimeSpan对象的比较。
例子代码
构造一个CTimeSpan对象,并获取其中的完整天数、小时数、分数和秒数,将获得的信息在信息框中显示。
CTimeSpan m_timespan(3,4,5,6); // 3天,4小时,5分,6秒
LONG m_totalDays=m_timespan.GetDays(); //获得完整天数
LONG m_totalHours=m_timespan.GetTotalHours(); //获得完整小时数
LONG m_totalMinutes=m_timespan.GetTotalMinutes(); //获得完整分数
LONG m_totalSeconds=m_timespan.GetTotalSeconds(); //获得完整秒数
char s1[8], s2[8], s3[8], s4[8];
wsprintf(s1,"%ld",m_totalDays);
wsprintf(s2,"%ld",m_totalHours);
wsprintf(s3,"%ld",m_totalMinutes);
wsprintf(s4,"%ld",m_totalSeconds);
CString m_str = "此时间范围包含:\n完整天数:"+CString(s1)+"\n完整小时数:"+CString(s2)+"\n完整分数:"+CString(s3)+"\n完整秒
数:"+CString(s4);
MessageBox(m_str);
运行结果在信息框中显示5行,其中s1的内容为“3”,s2的内容为“76”(3*24+4),s3的内容为“4565”(76*60+5),s4的内容为“273906”
(4565*60+6)。