Windows程序设计-第9章--MFC通用类.ppt
《Windows程序设计-第9章--MFC通用类.ppt》由会员分享,可在线阅读,更多相关《Windows程序设计-第9章--MFC通用类.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 MFC类库除了提供封装Windows界面元素对象的类,如CWnd、CMenu、CDialog等,还提供了一些通用的类。本章主要叙述字符串类、日期时间类和集合类的使用及主要成员函数,最后结合实例,说明使用该类的方法和技巧。9.1 1 字符串类字符串类CstringCstring1创建创建CString类对象类对象CString类构造函数的版本很多,它们的函数原型如下:CString( ); /构造空字符串CString( const CString& stringSrc ); /拷贝已有字符串内容,构造新的字符串CString( TCHAR ch, int nRepeat = 1 ); /用重
2、复的字符构造新的字符串,字符由参数ch表明,重复次数由nRepeat决定CString( LPCTSTR lpch, int nLength );/拷贝字符数组的内容构造字符串,lpch为指向数组的指针,nLength为数组长度CString( const unsigned char* psz );/拷贝以0结尾的字符串内容,构造新的字符串,psz为指向字符串的指针CString( LPCWSTR lpsz );CString( LPCSTR lpsz );/拷贝lpsz指定字符串内容构造Unicode字符串2有关数组属性的成员函数和操作符有关数组属性的成员函数和操作符(1)int GetLe
3、ngth( ) const;函数返回字符串对象中的字符数,不包括最后的0。(2)BOOL IsEmpty( ) const;函数判断字符串对象是否为空,即包含的字符数为0。如果为空,返回值为TRUE,否则,返回值为FALSE。 (3)void Empty( );函数强制清空字符串对象,使其包含的字符数为0。清空字符串对象后,调用GetLength函数的返回值为0。(4)TCHAR GetAt( int nIndex ) const; 函数返回字符串对象中由nIndex索引值指定单个字符,索引以0为基础,第一个字符对应的索引值为0。nIndex的值必须大于或等于0,小于字符串中字符的总数,在MF
4、C调试版本中,程序将检测nIndex是否为合法值,而在Release版本中,将不进行检测。 (5)operator LPCTSTR ( ) const; 操作符返回一个指向包含在CString类对象中的以0结尾的字符串的const char *指针,返回的指针是只读的,不能对其进行修改。 3CString类的表达式类的表达式 CString类重载了“=”、“+”、“+=”三个运算符,以实现字符串之间的赋值和串联运算。4 4比较类函数及操作符比较类函数及操作符(1)比较操作符CString类重载了“=”、“!=”、“”、“=”、“=”操作符,以实现对字符串的比较操作,可以进行字符串对象之间、字符
5、串对象和LPCTSTR字符串、字符串对象和字符指针之间的比较,比较操作是大小写敏感的。 (2)int Compare( LPCTSTR lpsz ) const;将字符串类对象与lpsz比较,如果相等,返回值为0;如果比lpsz大,返回值大于0;如果比lpsz小,返回值小于0。 5字符串截取类函数字符串截取类函数(1)CString Left( int nCount ) const; Left函数提取字符串对象最开始(左侧)的若干字符,将所提取子串的拷贝作为返回值。截取字符的数量由参数nCount决定,当nCount大于字符串长度时,整个字符串被提取。操作后,原始字符串未发生变化。 (2)CS
6、tring Right( int nCount ) const; 与Left函数调用类似,Right函数调用提取字符串右侧(末尾)的若干字符。(3)CString Mid( int nFirst ) const; CString Mid( int nFirst, int nCount ) const; Mid函数调用从字符串对象中间开始提取子串,开始位置由nFirst参数指定,提取字符数由参数nCount指定,当省略参数nCount,表示从nFirst开始,提取余下的所有字符。 CString s1( abcdef ); CString s2= s.Mid( 2,3 ); / s2= cde
7、6转换函数转换函数(1)void MakeUpper( );将字符串中的所有小写字母转换为大写。(2)void MakeLower( );将字符串中的所有大写字母转换为小写。(3)void MakeReverse( );反转字符串对象中所有字符的排列顺序。(4)int Replace( TCHAR chOld, TCHAR chNew );int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );(5)int Insert( int nIndex, TCHAR ch )int Insert( int nIndex, LPCTSTR pstr )函数从指定的
8、位置,插入一个字符或字符串,插入位置由nIndex参数指定,插入内容由ch或pstr指定,返回值为插入后新字符串的长度。(6)int CString:Remove( TCHAR ch );函数清除字符串对象中由ch指定的所有字符,返回值为删除的总字符数,如果没有匹配的字符,返回值为0。字符匹配是大小写敏感的。(7)int Delete( int nIndex, int nCount = 1 )函数删除字符串中连续的若干字符,删除的起始位置由nIndex参数决定,删除的字符数由参数nCount决定,如果nCount大于从nIndex开始余下的字符数,则余下的所有字符被删除。返回值为删除部分字符后
9、字符串的长度。 (8)void TrimRight( );void TrimRight( TCHAR chTarget );void TrimRight( LPCTSTR lpszTargets );没有参数的函数版本清除字符串结尾处的连续空白字符,包括换行符、空格、制表符直至遇到非空白字符为止。调用带参数的版本清除字符串结尾处所有指定的字符或字符串。 (9)格式化字符串void Format( LPCTSTR lpszFormat, . );函数用来格式化字符串,参数lpszFormat为格式化控制字符串,省略号表示lpszFormat中指定的参数列表,具体格式控制与printf函数类似,请
10、参考有关手册。7查找类成员函数查找类成员函数CString类中成员函数Find用来查找字符串中第一个匹配的字符或字符子串。函数返回第一个匹配字符或子串的起始位置,如果没有匹配子串或字符,返回-1,它的原型有4种。int Find( TCHAR ch ) const;参数ch指定要匹配的字符。int Find( LPCTSTR lpszSub ) const;参数lpszSub指定要匹配的字符串。int Find( TCHAR ch, int nStart ) const;int Find( LPCTSTR pstr, int nStart ) const;8有关缓冲区的操作有关缓冲区的操作使用
11、缓冲区来操作字符串内容应遵循下面的步骤:(1)调用GetBuffer函数,得到指向字符串缓冲区的指针; (2)直接修改指向缓冲区指针所指的内容,以达到间接修改字符串对象的目的; (3)调用ReleaseBuffer函数,以结束缓冲区的使用。9BOOL LoadString( UINT nID );9.2 2 日期和时间类日期和时间类 MFC提供了CTime和CTimeSpan类,以方便在应用程序中处理跟时间有关的数据。这两个类实现了ANSI时间函数(通常包含在time.h头文件中)的大部分功能,并简化了操作。我们也可以直接使用这些ANSI时间函数来处理时间数据。9.22.1 C1 CTimei
12、me类及其主要成员函数类及其主要成员函数1CTime类的常用构造函数类的常用构造函数CTime( );构造未初始化的时间对象,使用前,一定要初始化。CTime( const CTime& timeSrc );从现有的时间类对象构造新的时间类对象。CTime( time_t time );从time_t类型变量构造时间类对象。CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );通过指定年、月、日、小时、分、秒各分量来构造时间类对象。2 2提取时间信息的有关函数提取时间信息的有
13、关函数(1)time_t GetTime( ) const;从CTime类对象中提取time_t类型时间值。 (2)提取时间值:年、月、日、小时、分、秒、星期int GetYear( ) const; 返回值范围19702038;int GetMonth( ) const; 返回值范围112;int GetDay( ) const; 返回值范围131;int GetHour( ) const; 返回值范围023;int GetMinute( ) const; 返回值范围059;int GetSecond( ) const; 返回值范围059;int GetDayOfWeek( ) const;
14、 返回值范围17,1表示星期一,二为星期二,依此类推。 3重载的运算符重载的运算符(1)赋值运算符(=),用于将CTime对象或time_t变量赋给另一个CTime对象;(2)可以使用=、!=、=等操作符来比较两个CTime对象。往后的时间值比前面的时间值大;(3)可以使用+、-、+=、-=运算符向CTime类对象加入或减去一个CTimeSpan对象;(4)可以从一个CTime对象中减去另一个CTime对象,以得到CTimeSpan对象;4格式化时间格式化时间通过Format成员函数可以从CTime对象中创建一个格式化的CString对象,原型如下:CString Format( LPCTST
15、R pFormat ) const;9.22.2 C2 CTimeSpanimeSpan类及其主要成员函数类及其主要成员函数1常用的构造函数常用的构造函数CTimeSpan( ); 构造未初始化的CTimeSpan对象CTimeSpan( const CTimeSpan& timeSpanSrc );拷贝现有CTimeSpan对象的值,构造新的CTimeSpan对象CTimeSpan( time_t time );使用time_t类型(长整型)数值,构造CTimeSpan对象,time为时间差的秒数CTimeSpan( LONG lDays, int nHours, int nMins, in
16、t nSecs );2提取时间信息提取时间信息(1)GetDays、GetHours、GetMinutes、GetSeconds用于提取CTimeSpan对象中的天数、小时数、分钟数以及秒数,其原型如下:LONG GetDays( ) const;GetDays用于返回总的天数。int GetHours( ) const;Get Hours用于返回当天的小时数,取值范围为-2323。int Get Minutes( ) const;Get Minutes用于返回当前小时内的分钟数,取值范围为-5959。(2)使用GetTotalHours、GetTotalMinutes、GetTotalSec
17、onds提取CTimeSpan对象中的时间,并折合成总的小时数、分钟数以及秒数,其原型如下:LONG GetTotalHours( ) const;LONG GetTotalMinutes( ) const;LONG GetTotalSeconds( ) const;3重载运算符重载运算符CTimeSpan重载了=、!=、=运算符,以实现CTimeSpan对象之间的比较;CTimeSpan重载了赋值(=)运算符,以进行CTimeSpan对象之间相互赋值;CTimeSpan重载了+、-、+=、-=运算符,以实现两个CTimeSpan对象之间的运算。4格式化时间格式化时间CString Forma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 程序设计 MFC 通用
限制150内