- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例10.3】组合框、列表框、复选框的使用举例。 程序的运行结果如图10.21所示。学生可以在组合框中选择不同课程的类别,然后在列表框中选择具体的课程,之后,在组合框中会显示所选课程的学分,单击复选框可以选课,单击“计算总学分”按钮,会弹出图10.22所示的对话框,显示选课的总学分。 图10.21 例10.3的运行结果 图10.22 “COURSE”对话框 【例10.4】滚动条使用举例 程序的运行结果如图10.25所示。滚动条的范围设置为0到30,当前值为15,编辑框中显示当前位置的值。单击滚动条左侧或右侧的箭头,滚动条上的滚动块左移或右移一格,编辑框中的数字加1或减1。单击滚动条中滚动块和两端箭头之间的区域。滚动块左移或右移2格,编辑框中的数字作相应的改变。单击Left按钮,滚动块移到最左边,编辑框的数字变为0。单击Right按钮,滚动块移到最右边,编辑框的数字变为30。单击Reset按钮,滚动块移到最中间,编辑框的数字变为15。 图10.25 例10.4的运行结果 10.4 通用对话框 通用对话框是系统定义的对话框,为用户提供了一组标准接口,可以使用通用对话框来执行各种标准操作,如选择文件名(用于打开和保存文件)、选择字体、选择颜色、进行打印和打印设置、正文查找和替换等通用操作。MFC类库提供了五个从Cdialog类派生的通用对话框,封装了通用对话框的功能。 8.2 C++异常处理的实现 C++语言异常处理机制的基本思想是将异常的检测与处理分离。当在一个函数体中检测到异常条件存在,但无法确定相应的处理方法时,将引发一个异常,并由函数的直接或间接调用检测并处理这个异常。这一基本思想用3个保留字实现:throw、try和catch。它们的含义如下: (1) try:标识程序中异常语句块的开始。 (2) throw:用来创建用户自定义类型的异常。 (3) catch:标识异常处理模块的开始。 try和catch的语法 try { // try语句块 } catch(类型1 参数1) { // 针对类型1的异常处理 } … catch (类型n 参数n) { // 针对类型n的异常处理 } 说明(1): (1) 如果预料某段程序代码(或对某个函数的调用)有可能发生异常,就将它放在try子句之后。如果这段代码(或被调函数)运行时真的遇到异常情况,其中的throw表达式就会抛出这个异常。 在出现异常的情况下,try语句块提示编译器到哪里查找catch块,没有紧跟try块的cach块是没有作用的。当没有发生异常的时候,几乎没有和try块相关的运行时成本。查找匹配捕获处理异常的过程只在发生异常的情况下才会进行。 (2) catch子句后的复合语句是异常处理程序,捕获由throw表达式抛出的异常。异常类型说明部分指明该子句处理的异常的类型,它与函数的形参是相似的,可以是某个类型的值,也可以是引用。 如果某个catch语句的参数类型与引发异常的信息数据类型相匹配,则执行该catch语句的异常处理(捕获异常),此时,由throw语句抛出的异常信息(值)传递给catch语句中的参数。 说明(2): (3) try语句块必须出现在前,catch紧跟在后。catch之后的圆括号中必须含有数据类型,捕获是利用数据类型匹配实现的。在try{…} 和catch(…){ …}语句之间不得插入任何其它C++语句。 (4) 如果程序内有多个异常处理模块,则当异常发生时,系统自动查找与该异常类型相匹配的catch模块,查找次序为catch出现的次序。需要注意的是catch处理程序的出现顺序很重要,因为在一个try块中,异常处理程序是按照它出现的顺序被检查的。 (5) 引发异常的throw语句必须在try语句块内,或是由try语句块中直接或间接调用的函数体执行。throw语句的一般形式为: throw exception; 这里的exception表示一个异常值,它可以是任意类型的变量、对象或常量。 说明(3): (6) catch语句的类型匹配过程中不作任何类型转换,例如unsigned int类型的异常值不能被int类型的catch参数捕获。 (7) 如果异常错误类型为C++的类,并且该类有基类,则应该将派生类的错误处理程序放在前面,基类的错误处理程序放在后面。 (8) 如果一个异常发生后,系统找不到一个与该错误类型相匹配的异常错误处理模块,则函数terminate()将被自动调用进行默认处理,默认功能是调用abort()终止程序的执行。错误处理函数是由set_terminate()函数来指定的,当然,程序员可以用set_terminate()函数来指定自己希望使用的错误处理
文档评论(0)