《通用网络考试系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《通用网络考试系统的设计与实现.doc(55页珍藏版)》请在三一办公上搜索。
1、摘 要随着计算机网络的普及,利用网络环境进行考试成为教育考试发展的一个趋势。本文分析了目前己经存在的考试系统的特点,提出了一个构建通用网络考试环境的新思路,使考试系统既可以进行常规的标准化考试,又可进行主观型试题考试:即可进行理论知识的考试,又可进行考查应用软件操作技能方面的考试。本文给出了这一考试系统的设计与实现方案,并对设计过程中的一些技术要点进行了分析介绍。这个考试系统分为三个独立运行的子系统:1教师工作子系统;2考试过程控制子系统;3考试服务器子系统。该考试系统满足了用户对于考试系统的以下几个方面的需求:1教师能够建立试题库、设计试卷,并将试卷传送到考试服务器;2教师可以下载试卷包并对
2、主观型试题进行阅卷;3考生可以在网络内的一台计算机上登录到考试服务器,参加考试;4考试服务器可以控制试卷的打开、关闭、打包等;5考试相关的数据应当在网上准确、安全地传递。该考试系统在设计中比较有特色的方面有以下几点:1既可进行标准化的客观型试题考试,又可进行主观型试题考试;2既可进行理论考试,又可进行软件的操作考试;3考生客户端程序可免安装运行,系统构建简单;4考试过程异常中断时,可安全准确恢复考试过程;5考试系统具有通用性,不受学科限制。关键词 MFC;DAO;ADO;考试系统AbstractAs the computer network spreading to everywhere of
3、 the world , Network - Exam 15 becoming the trend of educational exam In this thesis, the author bring forward a new idea for constructing a network exam system. In this exam system, the form of exam question can be objective or subjective. It can not only examine the students veracity to the basic
4、theory, but also can examine the students ability in using a computer application. The author introduced a solution to designing and implementing the exam system and made an analysis to several technical issueIn this exam system there are three subsystems:1. Teacher working subsystem;2. Exam process
5、 control subsystem;3. Exam server subsystem;This exam system satisfy the following demands:1. Teachers can build their own question database, design their own exam paper and send the paper to the exam server;2. Teachers can download the package of exam paper from the exam server and check the paper;
6、3. Students can logon to the exam server and take part in the exam;4. The opening time of a exam paper can be controlled by exam server. So are closing time and packing time of the exam paper;5. The data related to the exam are delivered on network in security.There are several characteristics in th
7、is exam system:l. The form of exam question can be objective or subjective;2. It can not only examine the students veracity to the basic theory , but also can examine the students ability in using a computer software;3. The students client software can run directly without setup process;4. When the
8、exam process broken by some abnormal events the exam system can resume safely;5. Any courses can be tested on this exam system.Through the process of the network exam within three courses it proves this exam system is successful. These three courses are computer foundation, visual foxpro6.0 and netw
9、ork foundation. The exam system has distinct value in schools daily teaching activity.Key words Mfc, Dao, Ado, Exam system目录摘 要IAbstractII第1章 引言11.1 国内外动态11.2 本课题研究的主要内容11.3 本文的组织结构2第2章 软件开发环境32.1 Visual C+介绍32.1.1 为什么选择 Visual C+32.1.2 Visual C+开发数据库应用的特点32.2 MFC介绍42.2.1 MFC的特点42.2.2 运行基于MFC的应用程序的环
10、境优势62.3 DAO介绍62.3.1 DAO简介62.3.2 MFC DAO的特点62.4 ADO介绍62.4.1 ADO简介62.4.2 ADO的特点7第3章 系统需求分析83.1 通用网络考试系统研制的思路83.2 通用网络考试系统研制的原则93.3 用户权限93.4 教师工作子系统103.4.1 试题管理103.4.2 试卷生成103.4.3 阅卷及成绩处理103.5 考试过程控制子系统113.5.1 功能划分113.5.2 功能描述113.5.3 性能需求113.6 考试服务器子系统123.6.1 功能划分123.6.2 功能描述123.6.3 性能需求12第4章 功能模块设计134
11、.1 教师工作子系统134.1.1 功能设计134.2 考试过程控制子系统164.2.1 功能设计164.2.2 模块设计164.3 考试服务器子系统174.3.1 功能设计174.3.2 模块设计17第5章 本文所用相关技术及代码185.1 教师工作子系统185.1.1 基础支持类及模块185.1.2 试题成批输入与输出245.2 考试过程控制子系统295.2.1 考试过程的控制295.2.2 在C/S结构下实现考试程序的免安装运行305.2.3 操作试题的考试控制325.2.4 异常情况下的恢复处理365.3考试服务器子系统385.3.1 考试任务的管理385.3.2 考试服务器的定时39
12、5.3.3 试卷的打包和压缩39第6章 主要设计界面426.1 登录界面426.2 考试界面426.3 考试结束界面436.4 试卷生成界面436.5 用户管理界面46结 论47致 谢48参考文献49通用网络考试系统的设计与实现第1章 引言1.1 国内外动态随着计算机网络的广泛普及,实现考试的无纸化、自动化成为可能。考试手段的现代化是考试发展的必然趋势,特别是在计算机应用技术培训、外语教育培训等方面,机器考试的效果明显优于传统考试形式,在阅卷及成绩统计环节,机器考试的效率和准确性更是其它形式无法比拟的。从国际范围内看,网络考试系统主要出现并应用在国际性的认证考试中,目前采用基于网络的机器考试形
13、式的认证考试有以下。1微软认证考试;2GMAT考试;3Cisco认证考试;4TOEFL和GRE考试。在国内,也有许多网络考试系统出现并己经投入了使用,主要有以下考试。1计算机应用能力考试;2交通法规考试;3计算机等级考试;1.2 本课题研究的主要内容本课题的应用需求来源于学校目前的教学活动。当前各类的职业学校中,开设了许多计算机应用软件方面的课程,例如:计算机应用基础(包含 Word , Excel , PowerPoint 等软件);3DMax;Photoshop。在对这些课程的内容进行考核检查时,教师们普遍感到传统的考试方式已经无法适应这些考试内容,目前迫切需要一个能够满足下列功能的考试系
14、统:1能够进行标准化的考试这是所有机考系统必备的功能,用来进行选择、填空等形式的客观型试题的考试;2能够进行主观型试题的考试这是目前大多数机考系统不具备的功能。在现实教学活动中,有一大类试题被称为主观型试题,这些问题的解答形式是不能统一的。要处理这类试题的考试,系统必需具备人机交互的阅卷功能。3能够进行软件操作考试该功能是让考生在真实的软件环境下,操作软件完成考试要求的任务,如:录入编辑一个Word文本、处理一个电子表格等等。系统自动将考生制作的结果经网络收集起来。4能够由各科任课教师直接使用本考试系统的目标是为任课教师提供一个通用、开放的考试平台,教师可以象日常工作中一样,自己设计考试的试题
15、和试卷,自己组织考试和阅卷,不受专业限制,不必要求教师具有很多的计算机专业知识。1.3 本文的组织结构本文包含以下组成部分:1叙述了考试系统的概念、发展史、发展现状以及特点;2介绍了本课题所用到的开发工具及有关技术,如MFC、DAO、ADO等;3对系统的需求进行分析,叙述设计考试系统的思路、原则、要点及功能;4介绍考试系统功能及模块设计;5叙述了在考试系统实现中涉及的若干技术要点。总结:对本次的开发做出总结,指出本次开发的成功与不足。并对以后考试系统技术的改进与发展做了一定的展望。第2章 软件开发环境2.1 Visual C+介绍Visual C+是Microsoft的可视化工具包Visual
16、 Studio中的核心成员,是一个运用面向对象技术进行应用开发的理想工具。本文中有关的信息都是基于visual C + 6.0版本的。2.1.1 为什么选择 Visual C+Visual C+可以说是现在最为通用的开发工具之一,它提供了相当齐备的类库和友好的编程界面。虽然在提起数据库开发的时候人们通常会想到Delphi、Visual Basic、PowerBuilder等,但Visual C+从4.0版本开始,也对数据库开发提供了比较好的开发环境,随着版本的更新,Visua1 C+对数据库的访问技术更加成熟,功能也更强大。借助于 Visual C+可以高效规范地开发出功能强、速度快且占用资源
17、少的应用程序。Visual C+是一个全面支持面向对象技术的应用开发平台,丰富的类库提供大量的基础类和模板类,使得对各种开发项目提供了最丰富和便捷的资源。另外,拥有丰富的在线技术支持文档,也是我们选择Visual C+的一个重要原因。2.1.2 Visual C+开发数据库应用的特点Visua1 C+提供多种数据库访问技术ODBC API、MFC ODBC、DAO、OLEDB、ADO等。这些技术适用于各种不同的数据源,它们提供了简便、灵活、高效率、可扩展性强的应用开发接口,使Visua1 C+成为具有很大优势的专业开发工具。Visual C+进行数据库开发的主要特点可以归纳为以下几个方面:1便
18、捷的平台Visual C+提供的MFC类库具有强大的功能,它己经将DAO、ODBC等封装在内,开发人员只要直接调用相关类的接口函数即可,无需编写对数据库进行基础操作的代码,从而大大提高了开发的质量和效率。2可扩展性Visual C+提供的OLE技术和ActiveX技术,可以让开发人员充分利用Microsoft或第三方提供的各种组件和控件来创建自己的应用程序,从而实现了基于组件的开发模式,使应用程序具备了良好的可扩展性。3高效的数据库访问Visual C+为了解决ODBC接口应用程序访问数据库速度较慢的问题,提供了新的访问技术,即OLEDB和它的应用开发接口ADO,它们是基于COM的接口技术,该
19、技术可以直接对数据库的驱动程序进行调用,从而提高了数据库的访问效率。4统一的数据库接口传统的ODBC技术只能访问关系型数据库,而OLEDB技术不仅可访问关系型数据库,还可以访问非关系型数据库。事实上OLEDB对所有数据源提供了统一的接口,这使得它的数据库访问技术更加优越。2.2 MFC介绍MFC是Microsoft提供的利用面向对象技术构建基础类库,在6.0版本中封装了大约200个类,MFC 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立 Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接
20、口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;编译器使应用程序特定的逻辑通过类库获得实现。2.2.1 MFC的特点1封装;构成MFC框架的是MFC类库。MFC类库是C+类库。这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能。2继承;首先,MFC抽象出众
21、多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要类是CObject和CCmdTarget。CObject是MFC根类,绝大多数MFC类是其派生,包括CCmdTarget。CObject实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构MFC中,任何可以处理消息的类都从CCmdTarget派生。程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。3虚拟函数和动态约
22、束;MFC以“C+”,为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd封装Windows窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。4MFC的宏观框架体系。如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来
23、说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE / ACTIVEX应用程序的模板,等等。总之,MFC封装了Wln32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理。MFC是C+类库,程序员就是通过使用、继承和
24、扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C+对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。2.2.2 运行基于MFC的应用程序的环境优势作为Microsoft提供的基础类库,MPC被用于各种windows应用程序的开发,包括Microsoft自己捆绑在系统安装包中的许多应用程序。因此支持MFC 6.0运行的动态链接库已经包含在了Windows 98 SE及以后的标准安装中,使得用MFC编写的程序具有可“免安装运行”的特性。2.3 DAO介绍2.3.1 DAO简介DAO (Data Acces
25、s Object)是微软提供的数据库访问技术之一。它提供了一种通过程序代码创建和操纵数据库的机制。多个DAO构成一个体系结构,在这个结构中各个DAO对象协同工作。2.3.2 MFC DAO的特点1要通过Microsoft Jet数据引擎访问Microsoft Access数据库,使用DAO就会有显著的性能优势;2可以通过DAO访问数据库中的数据和数据库的结构定义;3DAO本身就是一组COM接口,加上MFC的封装,简化了编程的复杂程度。2.4 ADO介绍2.4.1 ADO简介ADO(Active Data Object,活动数据对象)是为Microsoft最新和最强大的数据访问接口OLE DB而
26、设计的,是一个便于使用的应用程序层。ADO实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供一般的OLEDB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。2.4.2 ADO的特点1易于使用由于ADO是高层数据库访问技术,所以相对ODBC来说,ADO具有面向对象的特点。2一致的数据
27、访问形式ADO可以使用同样的语句形式访问各种类型的数据源,这样使应用程序具有很好的通用性和灵活性。3高效的数据访问由于ADO本身就是基于OLE DB的接口,自然具有OLEDB的特点。4方便Web应用ADO可以以ActiveX控件的形式使用,这就大大方便了web应用程序的编写。5编程接口丰富ADO支持Visua1 C+、Visual Basic、Visual J+以及VBScript和JavaScript脚本语言。第3章 系统需求分析3.1 通用网络考试系统研制的思路这是一个基于网络的考试平台,在这个环境中有三个主要角色:即教师、考生和考试服务器。各角色之间的相互联系和工作流程如图3.1所示。图
28、3.1 系统结构图 这个考试系统分为三个独立运行的子系统:1教师工作子系统;2考试过程控制子系统;3考试服务器子系统。用户对于考试系统的需求大致可归纳为如下几个方面:1教师能够建立试题库、设计试卷,并将试卷传送到考试服务器;2教师可以下载试卷包并对主观型试题进行阅卷;3考生可以在网络内的一台计算机上登录到考试服务器,参加考试;4考试服务器可以控制试卷的打开、关闭、打包等;5考试相关的数据应当在网上准确、安全地传递。3.2 通用网络考试系统研制的原则网络考试系统应具有较高的实用性、较高的可靠性和先进的技术,能为任课教师提供一个通用、开放的考试平台,教师可以象日常工作中一样,自己设计考试的试题和试
29、卷,自己组织考试和阅卷,不受专业限制,不必要求教师具有很多的计算机专业知识。在考试系统的研制中,将注重网络平台、应用体系和安全体系的规划和设计,实现以下目标:1网络平台支持在基于工Internet 标准的网络环境下,对考试相关数据文件的分发和汇集。2应用体系全面覆盖目前“教学一考试”活动的全部流程,建立完整的应用支持项目,使考试的全过程进入考试系统。使系统保持最大限度的开放、通用和共享特性。3安全体系建立标准统一的网络用户管理机制。对网间传递的各种信息,要进行压缩和加密,最大限度地保障数据的安全性。3.3 用户权限在考试系统中具体使用的人员分为教师和考生两类,他们的权限分别为:1教师用户使用专
30、用的客户端软件,可上传、下载试题库、试卷等文件。 2考生用户使用专用的客户端软件在线注册,可接收指定的试卷文件,可上传考试结束后的试卷文件。3.4 教师工作子系统本系统的用户是教师及教学管理人员,通过使用该系统实现考试过程中的命题、阅卷和成绩处理等环节的信息化。并可以通过该系统与考试服务器进行信息的交换。系统在设计时划分了为试题管理、试卷生成、考生信息管理、阅卷及成绩处理四个模块,各个模块要实现的功能如下:3.4.1 试题管理试题管理是对本考试系统中的各种类型的试题进行管理的模块。在本考试系统中将考试的试题分为两大类:1常规试题:包括填空题、选择题、简答题、判断题等;2操作试题:用于考查对特定
31、的应用软件的使用技能、高级语言编程等。该模块要实现以下功能:1对常规试题库进行管理;2对操作题库进行管理;3教师可方便地向考试服务器上传试题库;4教师可方便地从考试服务器下载试题库。数据库采用ACCESS关系型数据库,建立下列数据库列表:常规试题表、操作试题表。3.4.2 试卷生成试卷生成是用来制作考试试卷的模块。它要实现以下功能:1根据教师选定的常规题库和操作题库,生成考试试卷文件;2教师可设定参加考试的考生信息;3教师可设定试卷的考试时长、试题数量、试题得分等。3.4.3 阅卷及成绩处理该模块用于考试后,对考试试卷包进行处理,它要实现以下功能:1从考试服务器下载试卷包;2对标准化的试题进行
32、自动阅卷、合计分数;3对无标准答案的主观型试题,提供人机交互的阅卷界面;4对成绩进行统计处理;5可查阅、打印、发布成绩单。3.5 考试过程控制子系统本系统的用户是考生用户,它要实现的目标是对考试的过程进行控制和管理,考生可以登录考试系统,下载考试试卷,解答试卷中的试题:可将考试后的试卷进行压缩加密,传送到考试服务器。3.5.1 功能划分1考生登录、下载考试试卷;2常规试题考试过程控制;3操作试题考试过程控制;4交卷处理。3.5.2 功能描述1考生登录、下载考试试卷每个考生通过输入考试代码、学号等信息登录考试服务器,经过资格的验证后,从考试服务器下载考试代码对应的试卷。2常规试题考试过程控制为考
33、生用户提供浏览、解答常规试题的界面。如果试题库的中的试题数量多于考试指定的试题数量,应该从中随机抽取试题。3操作试题考试过程控制为考生自动打开操作题所对应的应用程序。4交卷处理当考试到达结束时间或考生主动交卷后,将试卷相关的文件打包、压缩、加密后传送到考试服务器。3.5.3 性能需求1对考试的过程进行精确的计时;2对考生的操作界面进行锁定,禁止考生主动打开其它应用程序或切换到其它应用程序;3要有异常情况的恢复能力。当考生意外使计算机复位或机器死机等情况下,在计算机重新启动后,再次进入考试程序,应当回到前面考试中的界面,考试的试题、已经输入的解答信息不会改变,考试剩余的时间不变。3.6 考试服务
34、器子系统考试服务器系统的用户是教师或教学管理人员。考试服务器是本考试系统的信息中心,它提供标准的FTP服务,教师用户可上传、下载试题和试卷:考生用户可下载考试程序和上传考试试卷。考试服务器可精确地控制考试试题的打开、关闭和打包。3.6.1 功能划分1定义考试任务;2打开试卷;3关闭试卷;4试卷打包。3.6.2 功能描述1定义考试任务指定一项考试的开始时间、使用的试题等。2打开试卷按照考试任务的定义,定时打开一项考试的试卷。3关闭试卷按照考试任务的定义,定时关闭一项考试的试卷。4试卷打包在考试结束后,将一项考试中考生提交的所有试卷打包,为下一步教师的阅卷操作做好准备。3.6.3 性能需求1考试服
35、务器的文件服务部分要支持标准的FTP服务,可以多用户、多线程连接,并支持匿名用户登录;2试卷打包后要进行压缩,算法要有较好的压缩比;3试卷打包后要进行加密,保证信息不可直接解读。第4章 功能模块设计4.1 教师工作子系统4.1.1 功能设计该系统集试题管理、试卷生成、考生信息管理、阅卷及成绩处理于一身,含盖了考试系统中教师的基本工作流程。该系统能完成以下功能:1试题管理对常规试题和操作试题分别进行数据库管理。常规试题可由一定格式的纯文本文件成批导入;操作题目前支持OFFICE软件包中的Word,Excel,Access,PowerPoint及VFP 6.0等软件的操作试题。2考生信息管理对考生
36、相关的信息进行数据库管理。支持考生照片的连机遥控拍摄,并由有照片的基本编辑处理功能。3试卷生成利用常规试题库、操作试题库和考生信息库,组合生成考试试卷。可直接生成并发送到考试服务器。4.1.2 模块设计教师工作系统模块如图4. 1所示。 试题管理 试卷生成教师工作子系统 考生信息管理图4. 1 教师工作系统模块各模块具体实现功能如下:1试题管理。如图4.2、4.3所示。试题管理常规试题管理操作试题管理图4.2 试题管理模块图常规试题管理新建试题库打开已有试题库 按类导入 按类导出试题文本导入 新增试题 查找试题 删除试题显示试题内容图4.3 常规试题管理模块图2试卷生成。如图4.4、4.5所示
37、。生成试卷文件生成到桌面转送到服务器新建试题库1.考试代码2.考试标题3.常规题数量4.常规题总分5.常规题库6操作常规题库7.操作题数量8.操作题总分新建试题库1.考试日期2.开始时间3.命题人4.命题日期试卷生成图4.4 试卷生成模块图下载试卷包打开试卷包关闭试卷包试卷包文件操作打开试卷包试卷打包 查看考试信息试卷包合并图4.5 阅卷及成绩处理模块图4.2 考试过程控制子系统4.2.1 功能设计该系统用于对考生考试过程的控制。它包括考生登录、常规题考试、操作题考试、试卷打包、自动关机等模块。功能介绍如下:1考生登录按照考生输入的考试代码、考生号码等信息,验证考生的身份;从考试服务器下载对应
38、的考试试卷。2常规试题考试控制考生进入常规考试的过程。考生可浏览、解答试题。3操作试题考试控制考生进入常规考试的过程。为考生自动打开试题的应用程序。4试卷打包当考试到达结束时间或考生主动选择交卷后,对考试相关的文件进行打包、压缩和加密,传送回考试服务器。5自动关机考试结束后控制计算机自动关闭。考生登录考试过程常规试题考试操作试题考试试卷打包自动关机4.2.2 模块设计图4.6 考试过程控制模块图4.3 考试服务器子系统4.3.1 功能设计考试服务器是独立运行的软件,它控制考试试卷的打开、关闭和结束以后的试卷打包。主要有以下功能:1打开、关闭文件服务;2添加考试任务;3打开试卷;4关闭试卷;5试
39、卷打包。4.3.2 模块设计考试服务器模块如图4.7所示。新增考试任务定时器考试服务器考试任务管理清理历史删除考试任务考试信息打开试卷关闭试卷试卷打包定时器定时器设置打开、关闭、打包定时图4.7 考试服务器模块图第5章 本文所用相关技术及代码5.1 教师工作子系统5.1.1 基础支持类及模块这里列举的类及模块是本考试系统中的核心工具,它们被用在各子系统的设计中。在MFC中用来承载显示静态文字信息的控件是CStatic,但标准的CStatic无法满足我们的以下显示要求:1可改变文字的字体;2可任意调整文字的大小;3可设置任意的背景颜色;4可设置任意的文字颜色;5可将文字设置为底色透明。为了达到以
40、上要求,我们设计了一个CStatic的派生类CZMLabel,在类中增加了几个方法,使得上面列举的文字属性都可以任意调节。 这个标签类的定义如下: class CZMLabel :public CStatic Public: CZMLabel (); CZMLabel & SetBkColor (COLORREF crBkgnd);/设置背景色 CZMLabel & SetTextColor (COLORREF crText);/设置文字颜色 CZMLabel & SetText(const CString&strText);/设置显示文字 CZMLabel & SetFontName (co
41、nst CString & strFont);/设置字体 CZMLabel & SetFontSize (int nSize);/设置文字大小 virtual CZMLabel (); protected: COLORREF m_crText; CBrush m_hBrush; CBrush m_hwndBrush; LOGFONT m_1f; CFont m_fon; BOOL m_bState; FlashType m_Type; COLORREF m_BackColor; ;部分关键实现代码如下:HBRUSH CZMLabel: CtlColor (CDC* pDC, UINT nCtI
42、Color)if(&m_ hBrush) DeleteObject(m_hBrush); if(m_BackColor =-1)/背景透明 m_hBrush.CreateStockObject(HOLLOW_BRUSH); pDC-SetBkMode(TRANSPARENT); elsem_hBrush.CreateSolidBrush(m_BackColor); PDC-SetBkColor(m_BackColor);pDC-SelectObject(&m_font);pDC-SetTextColor(m_crText); if (m_Type=Background) if (!m_bSta
43、te) return (HBRUSH)m_hwndBrush; return (HBRUSH)m_hBrush;CZMLabel& CZMLabel:SetTextColor(COLORREF crText)m_crText=crText; RedrawWindow(); return *this;CZMLabel& CZMLabel:SetText(const CString & strText) SetWindowText(strText); return *this; CZMLabel& CZMLabel:SetFontSize(int nSize) nSize*=-1; m_If.If
44、Height=nSize; ReconstructFont(); RedrawWindow(); return *this; CZMLabel& CZMLabel:SetBkColor(COLORREF crBkgnd) if (&m_hBrush) :DeleteObject(m_hBrush); m_hBrush.CreateSolidBrush(crBkgnd); m_BackColor=crBkgnd; return *this; CZMLabel& CZMLabel:SetFontName(const CString& strFont) strcpy(m_ lf.IfFaceName,strF