




已阅读5页,还剩60页未读, 继续免费阅读
(计算机软件与理论专业论文)嵌入式gui技术的研究及其应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式g u i 技术的研究及其应用 摘要 数字计算机问世半个世纪以来,信息技术经历了次重大革命。世界上 首台通用数字计算机的运行宣告了科学计算自动化时代的降临,当今嵌入 式计算机无处不在的应用势头,展示了人类社会生活、生产活动高度自动 化的美妙前景。嵌入式计算机的广泛应用是p c 信息时代的重要特征i lj 。 d v d 刻录机作为数字类消费产品越来越多的进入到普通百姓的家庭, 越来越多的用户也对此类数字产品的图形用户界面提出了更高的要求,希 望能看到像p c 机上才有的既华丽美观又简单易用的g u i 。因此一个美观、 大方、方便的图形用户界面现在是很多d v d 芯片厂商所追求的。 本文主要研究的内容是基于嵌入式软件开发系统n u c l e u s 和嵌入式微 处理器a r m 7 的基础上开发出的d v d 刻录机的图形用户界面。文章首先概 述了嵌入式系统的特点,深入剖析了n u c l e u s 嵌入式系统的架构、优点。 然后叙述了嵌入式微处理器a r m 7 的工作原理,以及本文所阐述的图形用 户界面所依据的硬件平台的结构与特点。同时论述了此图形用户界面设计 的思想和方法,采用面向对象方法方法学、窗口机制、消息处理机制、以 及w i n 3 2 编程理论等,最后以部分图形用户界面的实现为基础,完成对整 个d v d 刻录机图形用户界面的成功实现。 关键词:图形用户界面;n u c l e u s 开发系统;a r m 微处理器;d v d 刻录机; o s d 屏幕显示 第m 页 t h er e s e a r c ha n da p p l i c a t i o no fe m b e d d e dg u it e c h n o l o g a b s t r u e t h a l fac e n t u r ys i n c et h ea d v e n t o fd i g i t a lc o m p u t e r s ,t h ei n f o r m a t i o n t e c h n o l o g yh a se x p e r i e n c e ds i g n i f i c a n tr e v o l u t i o n i z e sm a n yt i m e s t h ew o r l d s f i r s t g e n e r a l p u r p o s ed i g i t a lc o m p u t e r sr u n n i n ga n n o u n c e dt h e a r r i v a lo f s c i e n t i f i c c o m p u t i n g a u t o m a t i o nt i m e t o d a y ,t h eu b i q u i t o u sa p p l i c a t i o n t e n d e n c yo fe m b e d d e dc o m p u t e r ,h a sd e m o n s t r a t e daw o n d e r f u lp r o s p e c to f h i g h l y a u t o m a t i o no ft h eh u m a n ss o c i e t y l i f ea n dp r o d u c t i o na c t i v i t y e m b e d d e dc o m p u t e r sw i d e s p r e a da p p l i c a t i o ni sak e yc h a r a c t e ro ft h ep c i n f o r m a t i o na g e m o r ea n dm o r ed v db u r n e r se n t r yt oc o m m o np e o p l e sf a m i l ya st h ek i n d o fd i g i t a lp r o d u c t s ,a ni n c r e a s i n gn u m b e ro fu s e r ss e tah i g h e rr e q u e s tt ot h i s k i n do fd i g i tp r o d u c t sg u i ,t h e yh o p et os e e ab o t hg o r g e o u sa p p e a r a n c ea n d e a s y t o u s eg u io n l yt h ep cm a c h i n eh a s t h u s ,ab e a u t i f u l ,g e n e r o u sa n d c o n v e n i e n tg u iisp u r s u e dn o wb ym a n yd v dc h i pm a n u f a c t u r e r s i nt h i sd i s s e r t a t i o n ,t h em a i nc o n t e n t so ft h es t u d ya r eg u io fd v d b u r n e r d e v e l o p e db a s e do ne m b e d d e ds o f t w a r ed e v e l o p m e n ts y s t e m sw h i c h a r e n u c l e u sa n de m b e d d e dm i c r o p r o c e s s o ra r m 7 t h ed i s s e r t a t i o nf i r s t l y p r o v i d e s a no v e r v i e wo ft h ee m b e d d e ds y s t e m s c h a r a c t e r i s t i c s ,a n a l y z e s a r c h i t e c t u r ea n da d v a n t a g e so fn u c l e u st h o r o u g h l y ,t h e nd e s c r i b e sw o r k i n g p r i n c i p l eo ft h ee m b e d d e dm i c r o p r o c e s s o rb a s e do na r m 7a n dh a r d w a r e p l a t f o r m ,ss t r u c t u r ea n dc h a r a c t e r i s t i ct h a to nw h i c ht h eg u ir e l i e dt h a t a t t h es a m et i m e ,i te l a b o r a t e dt h o u g h ta n dm e t h o do ft h eg u id e s i g nw h i c h u s i n go b je c t o r i e n t e dm e t h o d o l o g y ,w i n d o w m e c h a n i s m s ,i n f o r m a t i o n p r o c e s s i n gm e c h a n i s m ,a sw e l la st h ew i n 3 2p r og r a m m i n gt h e o r ya n ds oo n f i n a l l y ,i tc o m p l e t e dr e a l i z i n gt h eg u i o ft h ee n t i r ed v ds u c c e s s f u l l yb a s e d o nt h ep a r t i a lg u i sr e a l i z a t i o n 关键词:g u i ;n u c l e u s ;a r m ;d v d ;o s d 第页 图表清单 图2 1 图形用户界面系统结构1 4 图2 2 本文提出的图形用户界面系统结构1 4 图3 1 字符型o s d 2 1 图3 2 位图型o s d 2 2 图4 1 图形用户界面模块3 0 图4 2 状态机工作原理3 8 图4 3f r a m e 的消息处理3 9 图5 1s e t u p 的主界面显示4 9 图5 2o s d 主菜单模式5 l 图5 3i n p u t 界面。5 3 图5 4t i m e rr e c o r d i n g 界面5 4 图5 5t i m e rr e c o r d i n g 编辑界面5 4 图5 - 6t i m e rr e c o r d i n g 界面5 5 表3 1 对象及职责l6 表4 2 系统文件路径3 0 第v i i i 页 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据 我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的 研究成果,也不包含为获得 金壁王些态堂 或其他教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢 意。 学位论文作者签名饬 签字日期:o p 口r 年弓月。占日 , 学位论文版权使用授权书 本学位论文作者完全了解金壁王些太堂有关保留、使用学位论文的规定,有权保留并 向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权金胆 工业太堂可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩 印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名镯 签字日期:a 口矿尹年弓月。局 l 学位论文作者毕业后去向: 工作单位: 通讯地址: 第1 i 页 一名:阮h 3 i 蝴秒p 月1 吒 l 电话: 邮编: 致谢 首先,我要衷心的感谢我的导师张维勇教授。在这三年中张老师以他 深厚的科学理论知识指引着我从事科学研究。张老师治学态度严谨、工作 作风踏实、学术思维开阔、精益求精,我在攻读硕士学位期间所取得的成 绩,离不开张老师的悉心指导和鼓励。我的硕士论文也是倾注了张老师的 大量心血,没有他的指导与帮助,我是不可能完成我的硕士学位论文的。 张老师平易近人、不断进取,在做人与做事等方面为我们树立了学习的榜 样,他经常指导我们要热爱生活、热心工作,并身体力行,这种耳濡目染 的熏陶对于我的一生都将是一笔宝贵的财富。 同时我要深深地感谢以前工作单位的领导汤总和刘波,感谢他们多年 来的栽培与教导,以及对我工作的肯定。感谢我的同事王光辉、王春艳、 施燕红、席丹丹以及d v d - v r 项目组里的每一位成员,没有你们的帮助和 鼓励就没有我今天所取得的所有成果。与你们的相处是快乐的,从你们身 上学到很多,很多,谢谢! 其次,我要深深地感谢分布式控制实验室的所有的老师和同学。在这 特别要感谢冯琳老师和魏振春老师,感谢他们在学习生活中给与我的指点 与帮助;感谢梅勃、许磊、杜焕军、张芬等师兄师姐们,通过和他们的交 流拓宽了我的思路;感谢任宇、李立、季炎、陶杰,与他们在一起学习生 活是非常难忘和快乐的;感谢我的师弟师妹们,他们乐观开朗的性格、勇 于探索的精神深深的影响着我;感谢实验室每一个成员对我的关怀和帮 助,没有这个团结、上进的集体就没有我今天的成绩。 最后,也要感谢我的爱人李洋和我的家人,尤其是李洋,李洋的母亲 和妹妹,当我在生活和学习上遇到挫折,心情沮丧时,正是他们给了我大 力的支持与一如既往的鼓励,使我得以顺利完成学业。 作者:彭静 2 0 0 9 年3 月 第v 页 1 i 研究背景 第一章引言 数字计算机问世半个世纪以来,信息技术经历多次重大革命。世界上 首台通用数字计算机的运行宣告了科学计算自动化时代的降临,当今嵌入 式计算机无处不在的应用势头,展示了人类社会生活、生产活动高度自动 化的美妙前景。随着多媒体信息技术、互联网、消费类电子产品的发展, 嵌入式操作系统由于其占用内存少、可裁剪性、稳定性好的特点1 2 】正得到 越来越广泛的应用。从m p 3 、手机、p d a ,到d v d 、机顶盒、g p s 、p l c ,再 到雷达、航天飞船,处处都存在着嵌入式系统的身影。嵌入式软件是智能 产品的核心。如果说p c 机的发展带动了整个桌面软件的发展,那么,数 字化产品的广泛普及必将为嵌入式软件产品的蓬勃发展提供无穷的推动 力。 1 1 1 嵌入式系统的发展历史 著名的摩尔定律引导了全球半导体行业4 0 年的研究与发展,也极大 地推动了嵌入式系统的发展和普及。从上世纪7 0 年代单片机的出现到现 在各种嵌入式操作系统和微处理器百花争鸣,已经有3 0 多年的历史。综 观嵌入式技术的发展,大致经历了以下三个阶段p j : 第一阶段是功能简单的专业计算机或是基于单片机的可编程控制器 形式的系统,同时具有监测、伺服、设备指示等功能。这种系统大部分应 用于专业性极强的工业控制、军事武器中,一般没有操作系统的支持,通 过汇编语言编程对系统进行直接控制,运行结束后清除内存。这一阶段系 统的主要特点是:系统结构和功能都相对单一,处理效率较低,存储容量 较小,几乎没有用户接口。虽然这种嵌入式系统使用简便、价格低廉,但 是已经远远不能适应高效的、需要大容量存储介质、多进程并发执行的现 代化工业控制和新兴的娱乐设备等领域的需求。 第二阶段是以嵌入式处理器微控制器和嵌入式操作系统为标志的嵌 入式系统。这一阶段系统的主要特点是:c p u 种类繁多,出现了大量高可 靠、低功耗的嵌入式处理器( 如a r m 、p o w e r p c 、m i p s 等) 。同时出现了 各类商业操作系统( 如v x w o r k s 、q n x 、s y m b i a n 等) ,能应用于不同的微 处理器平台,兼容性好。操作系统内核精小、效率高,具有高度的模块化 和扩展性,同时拥有文件和目录管理、设备支持、多任务、网络支持、图 形窗口以及用户界面等功能,具有大量的应用程序接口和丰富的嵌入式应 用软件。 第三阶段是基于i n t e r n e t 的嵌入式系统。微电子技术的迅速发展, 第1 页 s o c ( 片上系统) 技术使得嵌入式系统越来越小,功能却越来越强大。尽 管尚未与i n t e r n e t 完美结合,但随着i n t e r n e t 技术的发展以及i n t e r n e t 技术与信息家电、工业控制技术等结合日益密切,嵌入式系统的网络化进 程将会推动其更加飞速的发展。 1 1 2 嵌入式系统的特点 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪, 能适应应用系统对功能、可靠性、成本、体积、功耗有严格约束的一种专 用系统,所用的计算机称为专用计算机。这类系统一般由嵌入式微处理器、 外围硬件设备、嵌入式操作系统以及应用程序等四个部分组成,实现对其 他设备的控制、监视、管理等功能。从本质上讲,嵌入式系统中的计算机 总是处于一种实时计算模式,可以认为嵌入式计算机应具有某种实时特 性。换句话说,计算机的嵌入式应用与实时应用存在某种内在联系,根据 应用所强调的属性不同,这种计算机应用系统可称为嵌入式系统、实时系 统或嵌入式实时系统1 4 j 。 嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行 业的具体应用相结合后的产物,因此决定了它必然是一个技术密集、资金 密集、高度分散和不断创新的知识集成系统。嵌入式计算机系统同通用型 计算机系统相比,具有如下特点p j : 嵌入式系统通常使用面向特定应用的嵌入式微处理器,与通用型处 理器相比,最大不同就是嵌入式微处理器,大多工作在为特定用户群设计 的系统中,通常具有低功耗、体积小、集成度高等特点,能够把通用型处 理器中许多由板卡完成的任务集成在一个芯片内部,从而有利于嵌入式系 统设计趋于小型化。 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化 在存储器芯片或单片机本身中,而不是存贮于磁盘等额外载体中。 嵌入式系统的硬件和软件都必须高效率地设计,将操作系统和具体 应用有机地结合在一起,它的升级换代也是和具体产品同步进行。因此嵌 入式系统产品一旦进入市场,具有较长的生命周期。 嵌入式系统本身并不具备在其上进行进一步开发的能力,即使设计 完成以后用户通常也不能对所有的程序功能进行修改,必须有专门的开发 工具和开发环境。 嵌入式系统对可靠性和稳定性要求很高,应该尽最大可能避免“死 机 的出现。 后p c 时代是一个真实的阶段,而且是一个可以预测的时代。嵌入 式系统就是与这一时代紧密相关的产物,它将拉近人与计算机的距离,形 第2 页 成一个人机和谐的工作与生活环境。嵌入式系统与对象系统密切相关,其 主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围 电路( 如a d c 、d a c 、p w m 、日历时钟、电源监测、程序运行监测电路等) , 形成满足对象系统要求的应用系统。 1 1 3 嵌入式系统的体系结构 一般来说,嵌入式系统的体系结构可以分为四个部分:嵌入式微处理 器、嵌入式外围设备、嵌入式操作系统以及嵌入式应用程序1 6 j 。 嵌入式微处理器是嵌入式系统的核心。它与通用的p c 处理器最大 的不同在于:嵌入式微处理器大多工作在为特定用户所专门设计的系统 中,它将通用的p c 处理器中许多由外接板卡完成的工作集成到芯片内部, 从而使得嵌入式系统的设计可以趋于小型化,同时具有更高的效率和可靠 性。 嵌入式外围设备是指除了中心控制器件以外的,用于存储、通信、 调试和显示等辅助功能的其他器件。目前常用的嵌入式外围设备可以分为 存储设备、通信设备以及显示设备。 嵌入式操作系统是嵌入式系统中极为重要的组成部分,是专门负责 管理存储器分配、中断处理、任务调度等功能的系统软件。通常包括与硬 件相关的底层驱动程序、系统内核、设备驱动接口、通信协议以及图形用 户界面等。嵌入式操作系统具有通用操作系统的基本特点,并且在系统实 时性、硬件依赖性、软件固化性和应用专业性上具有更加鲜明的特点。 嵌入式应用软件是针对特定应用领域,基于某一特定硬件平台,用 来达到用户特定需求的计算机软件。与普通应用软件相比,嵌入式应用软 件不仅要求其准确性、安全性和稳定性等方面满足实际应用的需求,而且 要尽可能的优化,以减小对系统资源的消耗,降低硬件成本。“少而精 是嵌入式系统设计的最主要的目标。 1 1 4 典型的嵌入式操作系统 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌 入式系统极为重要的部分,通常包括与硬件相关的底层驱动软件、系统内 核、文件系统、图形界面等。具有以下几个特点【_ :系统内核小、实时性高、 多任务调度、进程线程间通讯、支持各种外设和网络协议等。 从2 0 世纪8 0 年代开始,出现了百余种嵌入式操作系统,比较流行的 有:w i n d o w sc e 、v x w o r k s 、n u c l e u s 、p s o s 、q n x 、p a l mo s 等,但是开源 并且免费的的嵌入式操作系统只有pc o s i i 和l i n u x 哺j 。 ( 】) w in d o w sc e 第3 页 w i n d o w sc e 是微软公司推出的一种3 2 位多任务操作系统,凭借微软 深厚的技术实力和广泛的市场号召力,w i n d o w sc e 成功应用于资源受限的 小型手持设备及个人信息管理设备。它包含了i n t e r n e te x p l o r e r 的版本, 可以和i n t e r n e t 实现连接、同步交换信息。 ( 2 ) y x w o r k s v x w o r k s 是美国w i n d r i v e r 公司推出的一个嵌入式实时操作系统。它 以其良好的可靠性和强实时性被广泛应用于军事、通信、航空、航天等高 技术领域中。目前v x w o r k s 是市场占有率最高的实时操作系统,并且被认 为是最优秀的操作系统,同时其价格也是最昂贵的。 ( 3 ) n u c l e l l s n u c l e u s 是美国a t i 公司推出的一个嵌入式实时多任务操作系统【9 】。 其9 5 的代码是由c 语言编写,非常便于移植并能支持大多数类型的处理 器,采用软件组件的方式,各个组件很容易被替换和复用。 ( 4 ) p s o s p s o s 现在也属于美国w i n d r i v e r 公司,是一个模块化、高性能的实时 多任务操作系统,拥有集成的开发工具平台,可以运行在u n i x 或者d o s 的计算机上,通过串口或t c p i p 网络与其相连。开发者可以利用它来实 现从简单的单个独立设备到复杂的、网络化的多处理系统。 ( 5 ) q n x q n x 是加拿大q n x 软件系统公司开发,建立在微内核和完全地址空间 保护基础之上的实时操作系统,实时、稳定、可靠、强壮,具有模块化程 度高、剪裁自如、易于扩展、运行速度极快的特点。 ( 6 ) p a l mo s p a l mo s 由美国3 c o m 推出,已经成为全球最受欢迎的掌上电脑和智能 电话操作系统之一。世界上每三台掌上电脑中有两台运行p a l mo s 软件。 它有开放的操作系统应用程序接口,开发商可以根据需要自行开发所需要 的应用程序。 ( 7 ) uc o s - i i pc o s - i i 是一种抢占式、多任务、移植性非常强、免费公开源代码 的嵌入式实时操作系统。自诞生以来,己经在多个领域得到了广泛应用。 它小巧且移植方便,实时性好,适合工业控制领域使用t l o l 。而且免费开放 源代码,相比其他商业实时嵌入式操作系统来说成本很低,非常适合开发 实用简约的嵌入式控制程序。然而,l ic o s i i 操作系统中并没有集成 t c p i p 协议栈,因而无法适应嵌入式设备网络化的需要,必须使用外挂的 t c p i p 协议栈或者根据硬件平台和实际应用重新设计并实现新的协议栈。 第4 页 1 1 5 嵌入式实时多任务系统n u c l e u s n u c l e u s 是美国a c c e l e r a t e rt e c h n o l o g y ( a t i ) 公司推出的一个嵌 入式实时多任务操作系统【l i i 。其9 5 的代码是由c 语言编写,非常便于移 植并能支持大多数类型的处理器,采用软件组件的方式,各个组件很容易 被替换和复用。只需一次性购买l i c e n s e s ,就可以获得操作系统的源码。 与其它嵌入式系统相比n u c l e u s 具有本身的一些优越性【1 2 】。 ( 1 ) n u c l e u s 购买的灵活性比较大 k e r n e l ,n e t w o r k i n g ,f il es y s t e m ,w e bt e c h n o l o g y ,t a r g e td e b u g g e r 可以分开购买,如果我们只需要微内核的话只要购买k e r n a l 和d e b u g g e r , 当前的下位机就是这样配置的。但是,如果以后我们要开发接入服务器和 i pp h o n e 的话就必须购买一堆网络协议;上位机要用的话还要购买文件系 统。v x w o r k s 就不是这样,其0 s 基本部分中已经包括了很多基本的网络协 议,只有一些比较特殊的网络协议需要单独购买,比如:s n m p l 2 ,o s p f 2 , i p x 等。当然,n u c l e u s 的好处在于各层协议都提供的是源码,v x w o r k s 则 不提供。 ( 2 ) n u c l e u s 是程序员不用写板支持的软件包( b s p ) 这是因为操作系统已经开放给程序员,不同的目标板在操作系统b o o t 时可以通过修改源码进行不同的配置。对于程序员来说,写b s p 是一项比 较繁琐的任务,有了o s 的源码这项工作就简单多了,同时调试时也可以 跟踪到中断、寄存器那一级,简化了硬件的调试。v x w o r k s 和p s o s 都必须 购买标准的b s p 模板工具来写板支持软件包,开发工作量就比较大了。 ( 3 ) n u c l e u s 对c p u 的支持能力比较强 支持当前流行的大多数r i s c 、c i s c 、d s p 处理器,比如:8 0 x 8 6 ( 实 时、保护模式) 、6 8 x x x 、p o w e r p c 、i 9 6 0 、m i p s 、s h 、a r m 、c o l d f i r e 。 n u c l e u s 系统对于不同的处理器,操作系统的源码大部分是相同的,只有 5 的源码是用汇编写的跟c p u 有关。如果使用另外的c p u ,则只用修改5 、 6 个汇编程序就可以进行移植,但是对于不同系列的处理器,它们的 c o m p il e r 、l i n k e r 、d e b u g g e r 是不同的( 要另外购买) ,而且编译预处理 的过程也是不一样的,这就要投入一部分力量去进行操作系统的移植。当 然,这也是n u c l e u s 的一个优点,v x w o r k s 和p s o s 都没有源码,换一个系 列的c p u 操作系统又要重新购买,实际上他们0 s 开发的工作量并没有多 少,但却造成了用户的重复性投资。 n u c l e u s 的核心是一个实时的多任务内核一一n u c l e u sp l u s ,具有以 下特性: ( 1 ) 可移植性 n u c l e u sp l u s 可用于大多数流行的处理器。因为n u c l e u sp l u s 主要 第5 页 是用标准c 写的,移植到新的处理器系列相对很直接。这也就意味着用 n u c l e u sp l u s 开发的应用程序也具有很高的可移植性。 ( 2 ) 可用性 不像其他的商业内核,n u c l e u sp l u s 的系统调用名直接表明了它的功 能。比如,你可以通过n u c r e a t e t a s k 系统调用来创建一个任务。n u c l e u s p l u s 的系统调用都设计成具有类似的入口参数和返回值类型。n u c l e u s p l u s 的对象都不隐式地和别的对象相关。比如,邮箱和任务之间是不相关 的。因此,用户可以利用多个n u c l e u sp l u s 对象之间的结合形成混合系 统调用。 ( 3 ) 配置 n u c l e u sp l u s 最终是以c 库的形式提供给用户,你可以选择所需要的 部分链入到你的应用程序中。但是,其可裁剪性并不好,如果某些系统功 能不要的话,必须在n u c l e u s h 的头文件中加一些宏定义,比如定义: # d e f i n en u e n a b l e s t a c k c h e c k ,那么每个系统调用时都要进行堆栈检 查,否则就不进行堆栈检查,可以删除的功能并不多。v x w o r k s 的可裁剪 性就强多了,有3 0 0 多个独立模块,微内核6 k ,最小系统 w p a r f r m l d ) r f r m h p a r f r m = h u i g e t f r m h a n d l e ( p r f r m d s c 一 w p a r f r m l d ) : u i a s s e r t ( f g h a n d l e i s v a li d ( r f r m h p a r f r m ) ) : ) e l s e r f r m h p a r f r m = n u l l : 第4 2 页 木为创建的f r a m e 设置属性( 这里所设置的属性由用户参数给定,如 果没有给出,则使用缺省的值,i = r f r m w f r m i d = p r f r m d s c 一 w f r m i d : r f r m w b d r w i d = p r f r m d s c 一 w b d r w i d : r f r m d w f r m s t l = p r f r m d s c 一 d w f r m s t l : r f r m b f r m s t a t= u if r ms t a tn o r m a l : r f r m f g f r m e v n t p r o c = p r f r m d s c 一 f g f r m e v n t p r o c : o s s m e m c p y ( ( r f r m r r d c ) ,p r f r m d s c 一 p r r d c ,s i z e o f ( s u i f r m r d c ) ) : o s s m e m c p y ( ( r f r m r f r m r c t ) ,( p r f r m d s c 一 r f r m r c t ) ,s i z e o f ( s r c t ) ) 术把刚n u g j 建的f r a m e 加入到f r a m e 列表中木 r f r m h c t r ll s t = h c r e a t e l is t ( ) : u i a s s e r t ( f g h a n d l e i s v a li d ( r f r m h c t r l l s t ) ) : a d dt ot h eg l o b a lf r a m e1 i s t 肆 h f r m l s t n o d = h a p d l i s t n o d e ( 一r u i h f r m l s t ,& r f r m , s i z e o f ( s u i f r m ) ) : u i a s s e r t ( f g h a n d l e 工s v a li d ( h f r m l s t n o d ) ) : :l = 创建所有f r a m e 中的孩子 1 薯g e tf r a m eh a n d l e 鼍| f g r e t = f g g e t l i s t n o d e d a t a 蠢 ( h f r m l st n o d ,( v oid * * ) & h f r m ) : 水c r e a t ea l lc h i l dc o n t r o l s 木 f g r e t = f g u if r m c r t c ld c tls ( h f r m , p r f r m d s c 一 u i c t1 c n t ,p r f r m d s c 一 p p v c t r l a r r a y ) : n o t i f yp a r e n tac h i l dh a sb e e nc r e a t e d 鼍 if ( r f r m h p a r f r m ) f g r e t = f g u is e n d e v e n t ( r f r m h p a r f r m , u 工一e c n o t i c h i l d f r a m e c r e a t e d , ( d w r d ) h f r m ) : ) r e t u r n ( h f r m ) : 第4 3 页 从函数中可以看到,当执行f r a m e 创建函数,应用程序将会得到一个 f r a m e 的句柄,这样对于上次用户来说,就可以应用这个句柄对f r a m e 进 行一些操作。函数输入的是创建一个f r a m e 说必要的一些参数,例如f r a m e 的起始位置、大小、是否显示等。需要注意的是f r a m e 必须在白板上建立, 也就是说f r a m e 必须在创建的白板内,而不能越出白板的范围。 当实现了f r a m e 之后可以在f r a m e 的基础上创建其它的控件,这里所 创建的f r a m e 就是将要创建控件的父亲,而将要创建的控件就是f r a m e 的 孩子。我们也可以依次推下去。 5 1 2 消息事件的实现 当创建一个控件之后,想要使这个控件活起来就必须要处理它的消息 事件。在创建一个控件时我们已经为这个控件指定了它的消息处理函数, 当然用户可以处理这些消息,而且控件本身也具有缺省的消息处理函数, 下面的程序就是一个f r a m e 缺省的消息处理函数。本函数首先通过 w e v n t c o d 参数分辨是那种事件,然后进入到相应的事件处理函数,d w p a r m 参数是为了用户事件处理所传递的参数,当该事件顺利处理后,函数返回 t r u e ,否则为f a l s e 。 b o o l f g u i d e f a u l t f r a m e e v e n t p r o c ( h a n d l eh f r m ,w o r dw e v n t c o d , d w r dd w p a r m ) ,i c 定义返回状态f g s t a t 水 水检测参数木 木按照w e v n t c o d 的不同进入不同的事件处理,i c if ( f g uiis k e y e v e n t ( w e v n t c o d ) ) | k e ye v e n t f g s t a t = f g u i f r a m e o n k e y ( h f r m ,w e v n t c o d ,d w p a r m ) : ) e ls e 根据状态机的转换的消息进行一些必要的事件处理 s w it c h ( w e v n t c o d ) c a s eu i e c d i s p s e t f r a m e s t a t e : f g s t a t = f g u i f r a m e o n s e t s t a t e ( h f r m ,( b y t e ) d w p a r m ) : b r e a k : 第4 4 页 c a s eu i e c n o t i c h i l d f r a m e c r e a t e d : 木当孩子f r a m e 被创建时,应该加入它到f r a m e 的控制列表中木 f g s t a t = f g u i f r a m e o n c h il d c r e a t e d ( h f r m ,( h a n d l e ) d w p a r m ) : b r e a k : ,i cf r a m e 中其它的一些事件处理木 木一些可以被忽略不计的事件木 d e f a u l t : f g s t a t = t r u e : b r e a k ; r e t u r n ( f g s t a t ) : 5 1 3g u i 软件开发包中的m a k e f i l e 文件 前面已经提到过对于系统文件的编译我们采用了m a k e f i l e 文件方式 进行。下面我们以w i d g e t 的编译文件一m a k e f i l e 为代表进行具体的说 明: t a r g e t n a m e = w i d g e t 0 木生成的目标文件为w i d g e t 0 奉 m o d d i r = $ ( c u r d i r )水文件的路径为当前的路径牛 木包含的一些其它库的目录木 i n c l u d e s = 一i $ ( m o d d i r ) - i $ ( m o d d i r ) i l l c l u d e 一i $ ( s r c d i r ) c o m m o n 一i $ ( s r c d i r ) k e r n e l o s s i n c l u d e - i $ ( s r c d i r ) k e r n e l u ti1 i n c l u d e - i $ ( s r c d i r ) k e r n e l r t o s i n c l u d e 一i $ ( s r c d i r ) s h a r e i n f i n c l u d e - i $ ( s r c d i r ) d s p c t r l in c l u d e 一i $ ( s r c d i r ) p e r i p h e e p r o m d r v i n c l u d e 一i $ ( s r c d i r ) p e r i p h v f d d r v p d v f d i n c l u d e 一i s ( s r c d i r ) p e r i p h a u d i o a u d i o c o m i n c l u d e i s ( s r c d i r ) p e r i p h a u d i o a d a c i n c l u d e 第4 5 页 f l a g s = 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) - i s ( s r c d i r ) - i s ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i s ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 一i $ ( s r c d i r ) 木需要编译的源文 s r c = b u t t o n c b u t t o n i c d i g e s t c d i g e s t i c e v e n t c e d i t b o x c e d i t b o x i e f r a m e c f r a m e i c 1 is t y c 1 i s t y i e m e n u c 肆 p e r i p h a u p e r i p h d s p e ri p h o s p e r i p h e e p e r i p h i r p e r i p h v f p e r i p h t u u i e n t r y u i b r o w s e u i u i m o d u u i p l a y | u i r e c o r d u i s c r s a v u i s e t u p u i s h o w | u i t e m p | u i u i m a i n u i u ic o m m u i w i d g e t u i i n p u t 第4 6 页 d i o s p d i f i p i n c l u d e | d i n c l u d e 1 p r o m i n cl u d i n c l u d e | d i n c l u d e | n e r i n c l u d e | 1 e | e | l o n | n c l u d e e 件 m e n u i c s c r o l l c s c r o l l i c s 1 i d e r c s 1 i d e r i c t m e n u c t m e n u i c u i c u ii c v i e w c v i e w j a i n c l u d e $ ( t o p d i r ) m a k e f i l e d e f 该m a k e f i l e 文件生产的目标文件是w i d g e t 0 ,当前模块的路径是当 前目录,包含头文件的路径是当前目录下的i n c l u d e 目录、s r c d i r k e r n e l 下的头文件路径、s r c d i r u i 目录下的头文件目录等。源文件包括此目录 下的所有源文件。 5 2s e t u p 界面的实现 s e t u p 功能模块提供系统功能,主要包括定时刻录、对d i s c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春季养生义诊活动方案策划
- 格瓦斯整合营销方案
- 小型房地产企业管理制度
- 儿童秋衣秋裤活动方案策划
- 十月营销推广方案模板
- 铃木摩托车营销方案模板
- 人造草坪组织施工方案
- 天津趣味跑活动策划方案
- 成华区商业咨询方案公示
- 2025年注册会计师(CPA)考试会计科目真题再现试卷及解析
- 环境灾害预警系统-洞察及研究
- 无人机基地技术支持与服务方案
- 水果代销合同(标准版)
- 肠结核合并肠穿孔护理查房
- 矛盾纠纷调解课件
- 2025年公安系统公务员公开遴选笔试全真模拟题
- 烷烃的命名教学课件
- 2025秋人教版(PEP)(2024)一年级上册英语教学计划
- 农产品产地加工增值服务创新创业项目商业计划书
- 出租车安全驾驶培训课件
- 2025年河北机关事业单位工人技能等级考试(畜禽饲养繁殖工·高级)历年参考题库含答案详解(5卷)
评论
0/150
提交评论