友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第130章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






%y 不带年代前缀的年数,值在00到99之间。  



%Y 带年代前缀的年数。  



%z 简写的时区名称。  



%Z 不简写的时区名称。  



%% 百分号标志。  



这个程序的代码如下:  



CTime m_time=CTime::GetCurrentTime();  



CString s1=m_time。Format(〃%A;%B;%d;%Y〃);  



CString s2=m_time。Format(〃%U〃);  


…………………………………………………………Page 626……………………………………………………………

CString m_str=〃当前时间是:〃+s1+〃n〃+〃本周是今年的第〃+s2+〃周〃;  



MessageBox(m_str);  



运行结果如图10。19所示。  



                                        



                     图10。 19 显示当前时间  



CTimeSpan类由下列成员函数:  



CTimeSpan() 构造一个CTimeSpan类对象。  



GetDays() 获得CTimeSpan类对象中包含的完整的天数。  



GetHours() 获得当天的小时数,值在…23到23之间。  



GetTotalHours()获得CTimeSpan类对象中包含的完整的小时数。  



GetMinutes() 获得当前小时包含的分数,值在…59到59之间。  



GetTotalMinutes() 获得CTimeSpan类对象中包含的完整的分数。  



GetSeconds() 获得当前分钟包含的秒数,值在…59到59之间。  



GetTotalSeconds() 获得CTimeSpan类对象中包含的完整的秒数。  



Format() 将一个CTimeSpan对象转换成格式字符串。  



operator = 赋予新的时间范围值。  



operator ???? 增加或减小CTimsSpan对象。  



operator ???????CTimeSpan对象增加或减去一个CTimeSpan对象。  



operator ??,?? ,?,?,??,?? 比较两个CTimeSpan对象的大小。  



下面的程序将构造一个CTimeSpan对象,并获取其中的完整天数、小 

时数、分数和秒数,代码如下:  


…………………………………………………………Page 627……………………………………………………………

CTimeSpan m_timespan(3;4;5;6);  



//构造一个CTimeSpan对象  



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);  



                                              



                 图10。 20 获取时间范围量包含的天、小时、分和秒数  



这段代码主要让读者体会使用CTimeSpan处理时间范围量的便捷。运 

行结果如图10。20所示,消息框中显示了希望获得的信息。  


…………………………………………………………Page 628……………………………………………………………

          第十一章 异常处理和诊断  



编写程序时出一些错误是难免的,在C++中称在软件或硬件中发生的 

不期望或不需要的事件为异常 (Exception)。MFC提供了两种异常处 

理机制:  



  l C++异常,在MFC 3。0和更高版本中可以使用  



  l MFC异常,在MFC 1。0和更高版本中可以使用  



在程序出错误后需要调试程序,MFC提供了许多诊断服务,可以让用 

户轻松的调试程序,这些诊断服务大多以特定宏和全局函数形式出 

现。  



本章将向读者介绍以下内容:  



  l 处理C++异常  



  l MFC异常  



  l 诊断服务  



               第一节 处理C++异常  



C++使用try、catch、throw三个关键字来实现异常处理。使用C++的 

异常处理能够使你的程序从异常状态中恢复。这些异常由处于正常控 

制流之外的代码来处理。  



  l 注意:  



  l 新的32位的异常处理机制支持C和C++。但是,它并非为C++专门设 

   计的。你应 当保证你的代码非常适合于C++的异常处理,并且C++ 

   的异常处理是相当灵活的,它可以处理任何类型的异常。  



异常处理机制允许程序对严重的和没有预料到的问题做出响应。一个 

异常块由下列三个部分组成:  



  l try块  



标志你认为可能会出现异常的代码。  



  l catch块  


…………………………………………………………Page 629……………………………………………………………

紧跟着try块,里面包含了处理异常的代码。  



  l throw块  



抛出一个异常,激活catch块中的相应的异常处理代码。  



异常处理的机制比较简单,首先你将有可能出现问题的代码放在try 

块中,然后在catch块中放进用来处理异常的代码。如果在try块中的 

代码抛出一个异常,try块迅速退出执行,程序将转入catch块中执行 

相应的异常处理代码。  



                   第二节 MFC异常  



在MFC中CException类是所有异常类的基类,它是一个抽象类,你不 

能使用它的对象,只能创建它的派生类的对象。它有两个公用方法: 

GetErrorMessage 和ReportError ,分别用于查找描述异常的 

信息和为用户显示一个错误信息的信息对话框。  



CException类包含以下基类 (如图11。1所示),并提供了THROW、 

THROW_LAST、TRY、CATC、  AND_CATCH、  END_CATCH这些宏用来处理 

异常。  



                                 



                  图11。 1 CException的基类  



   (1) CArchiveException  



一个CArchiveException用来描述序列化异常状态。它包含了一个数 

据成员m_cause用来表现异常的原因。它可能为以下值:  


…………………………………………………………Page 630……………………………………………………………

none :没有错误发生  



generic:未指定的错误  



readOnly:试图写入一个为载入而打开的文档  



endOfFile:当读取一个文档时到达文档尾部  



writeOnly:试图读取一个为存储而打开的文档  



badIndex:非法文件格式  



badClass:试图读一个对象到一个错误类型对象中  



badSchema:试图读一个对象,它带有不同的类的版本  



另外MFC还提供AfxThrowArchiveException 函数来抛出一个存档 

文件异常,形式如下:  



void AfxThrowArchiveException( int cause; LPCTSTR lpszArchiveName );  



   (2) CDaoException  



一个CDaoException类对象用来表示基于数据访问对象 (DAO;data  

access   objects)的MFC数据库类的异常。这个异常类包含三个决定 

异常原因的成员变量,这三个成员变量是:  



m_scode:描述与异常相关的SCODE代码  



m_pErrorInfo:包含用于所有MFC的DAO类的所有异常的扩展错误代码  



m_nAfxDaoError:包含DAO错误对象的指向CDaoErrorInfo结构的指针  



这个类有下列两个操作:  



GetErrorCount  获取在数据库引擎异常集合中的异常数 目  



GetErrorInfo  获取在异常集合中相似对象的错误信息  



MFC中的AfxThrowDaoException()函数抛出一个CDaoException类型的 

异常,使用如下形式:  



void AFXAPI AfxThrowDaoException( int nAfxDaoError = NO_AFX_DAO_ERROR; SCODE  

scode = S_OK );
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!