(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf_第1页
(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf_第2页
(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf_第3页
(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf_第4页
(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf_第5页
已阅读5页,还剩79页未读 继续免费阅读

(计算机软件与理论专业论文)基于编码机制的命令编辑解释器研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

旧川师范大学硕十学位论文 基于编码机制的命令编辑解释器研究 计算和欹件与理论专业 研究生兰青青指导教师杨小平 随着信息技术尤其是计算机网络技术的不断发展,信息技术在现代教育活 动中的应用越来越广泛和深入,远程教学模式因其固有的诸多优势正在全球范 围内蓬勃发展,在充分利用目前我国计算机网络环境下,要实现在线学习、双 向交互,又希望尽量减小所需网络数据流量,降低对网络带宽的需求,我们提 出一种新型的“基于命令流”的远程教育思想,依附于远程教育平台作为载体, 研究能够运行在计算机网络上的基于命令流方式的远程教学技术,该技术能够 实现在主课堂和分课堂之间通过网络传送标准命令而非大量的视频流而实现 教学互动。相对视频流庞大的数据量而言,命令流的数据量极其小,对网络基 础设施的依赖大大降低,适合更大范围使用。“基于编码机制的命令编辑解释 器”源于“基于命令流的远程教学平台”该课题,是整个课题内核,旨在建立 一种消息命令的映射机制,对所传递命令再生、重现。 本文首先对比分析了当今国内外远程网络教育的现状,结合课题的背景和 发展现状进一步阐述“基于命令流的远程教育平台”课题的意义和价值,针对 该课题进行整个系统模块划分,有助于进一步理解命令编码解码机制的含义。 其次,阐述初步实现的“演示品”的功能,通过测试分析其存在的不足,提出 进一步的解决方案基于m f c 消息映射机制和w i n 3 2 多线程思想的“命令 消息编码解码器”,并分步论述,一、“命令消息编码解码器”整体设计框架大 致说明,二、消息命令捕获机制相关概念及研究环境介绍,三、对m f c 消息 机制分析建立消息映射表,四、设计消息捕获控制机制:结合w i n 3 2 多线程编 程和挂钩技术进行阐述,通过对“某实例”内相关消息的捕获和再现而对整个 儿 四川师范大掌硕:i 学位论文 控制机制的说明和实现,五、相关部分代码说明。最后,对课题的进一步深入 研究的规划与可行性分析与说明。 关键词:命令流,消息映射机制,w i n 3 2 多线程程序设计,挂钩 d l l ,p e 文件格式,t l s ,线程同步机制 i i i 旧j i l 师范大学硕二卜学位论文 ar e s e a r c ho f c o m m a n d s e d i t i n ga n dr e p r o d u c i n g m e c h a n i s mb a s e do na n a l y z i n gw i n 3 2k e r n e l e n c o d i n ga n dd e c o d i n gm e c h a n i s m m a j o r :c o m p u t e rs o f l w a r ea n dt h e o r y g r a d u a t es t u d e n t :l a nq i n g q i n g s u p e r v i s o r :y a n gx i a o p i n g a l o n gm t ht h ed e v e l o p m e n to ft h ei n f o r m a t i o nt e c h n o l o g y ,e s p e c i a l yt h e c o m p u t e rn e t w o r kt e c h n o l o g yd e v e l o p e ds o o n , i t sn e wa p p l i c a t i o ni nm o d e m e d u c a t i o ne v e n t sb e c a m em o r ea n dm o r ew i d e l ya n dd e e p l y , s ot h el o n g - d i s t a n c e e d u c a t i o ne x p a n d sq u i c n yb e c a u s eo f i t sn a t i v ea d v a n t a g e d e p e n d so nt h en e t w o r k e n v i r o n m e n to f o u rc o u n t r yn o w a d a y s ,w en e e dt or e a l i z et h ei n t e r a c t i v ea n do n l i n e s t u d ym o d e ,b u ta l s od e c r e a s et h en e t w o r kd a t a - s t r e a ma n dt h er e q u i r e m e n to ft h e b a n d w i d t ha tt h es a m et i m e s ow e b r i n gf o r w a r dan e wm e t h o dw h i c hi sc o n s i d e r e d a s al o n g - d i s t a n c et e a c h i n gm o d eb a s e d c o m m a n df l o w ”i tt a k e st h ee d u c a t i o n p l a t f o r ma st h ec a r t i e r , r e a l i z et h ei n t e r a c t i v et e a c h i n gs t u f f d u r i n gt h em a i nc l a s sa n d t h ed e p a r t - c l a s sw h i c hr e l i e do nt h ec o m m a n d s t r a n s m i s s i o nt h r o u g ht h ei n t e r a c t c o m p a r e dw i t ht h el a r g ev i d e of r e q u e n c y , c o m m a n d sf l o wi sm u c hs m a l l e r , a n dt h e r e q u i r e m e n t st ot h ef o u n d a t i o ni n s t r u m e n t si se x i g u i t y , w h i c hw o u l db es u i t a b l et o w i d e l yu s e t h er e s e a r c ho fam e c h a n i s mn a m e dc o m m a n d se x p l a i n i n gs y s t c m w h i c hi sb a s e do na n a l y z i n gw i n 3 2m e c h a n i s m i sj u s tc o m ef i o mt h et a s k t h e l o n g - d i s t a n c ee d u c a t i o np l a t f o r mw h i c hi sb a s e do nt h ec o m m a n d sf l o w , i t so n eo f 四川师范人学硕士学位论文 t h em o s ti r a p o r r a n tp a r to ft h ew h o l et a s k ,j u s tw a n t st ob u i l dam e s s a g e - c o n u n a n d m a p p i n gm e c h a n i s mt ot r a n s f e rt h ec o m m a n d si nr e a l - t i m e ,t h e nm a k et h ee v e n t s r e c l l l i nt h i sa r t i c l e ,w ec o n c l u d et h el o n g - d i s t a n c ee d u c a t i o np a t t e r n sn o w a d a y si n b o a r da n da b o a r d , t h e nd e e p l ye x p a t i a t et h et a s k st r u em e a n i n ga n di t sv a l u e d i v i d e t h ew h o l et a s ka f t e ra n a l y z i n gt h ed e m o s d i s a d v a n t a g e s a n d b r i n go u t a s o l u t i o n - - - t h em e c h a n i s mw h i c hi sb a s e do l lt h em f c m e s s a g e - l o o pa n dw i n 3 2 m u l t i t h r e a d sa p p f i c a t i o n a f t e rt h a t ,1g i v eac o m p l e t e l ye x p l a n a t i o no ft h ew h o l e f i a m e w o r k :1 、m a c r o c o s m f r a m e w o r k i n t r o d u c e s ;2 、h o w t oc a p t u r e t h e c o m m a n d s a n dt h er e s e a r c he n v i m t m _ l e n t ;3 、a n a l y z i n gt h em e s s a g e l o o pm a p p i n gt h e nt om a k e an e wt a b l e ;4 、d e s i g nt h em e s s a g ec a p t u r em e c h a n i s mc o m b i n et h ew i n 3 2 m u l t i t h r e a d sa p p f i c a t i o n , a tl a s tg i v ea ne x a m p l ea n di t sc o d ee x p l a n a t i o n k e y w o r d s :c o i t f f n a n df l o w ;m e s s a g em a p p i n gm e c h a n i s m ;h o o k ;w i n 3 2 m u i t i t h r e a d s a p p f i c a t i o n ;p e f i l e ;t i n ;t h r e a d ss y n c h r o n i z a t i o n m e c h a n i s m v p u 川师范大学硕,j 学位论文 四川师范大学学位论文独创性及 使用授权声明 本人声明:所呈交学位论文,是本人在导师扬型! 壬指导下,独 立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任 何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。 本人承诺:己提交的学位论文电子版与论文纸本的内容一致。如因不符而 引起的学术声誉上的损失由本人自负。 本人同意所撰写学位论文的使用授权遵照学校的管理规定: 学校作为申请学位的条件之一,学位论文著作权拥有者须授权所在大学拥 有学位论文的部分使用权,目:1 ) 已获学位的研究生必须按学校规定提交印 刷版和电子版学位论文,可以将学位论文的全部或部分内容编入有关数据库进 行检索:2 ) 为教学和科研目的,学校可以将公开的学位论文或解密后的学位 论文作为资料在图书馆、资料室等场所或在校园网上供校内师生阅读、浏览。 论文作者签名: 青青 2 口0 7 年3 月j 5 日 四川师范大学硕士学位论文 第一章绪论 1 1 引言 伴随远程教学模式在全球范围内蓬勃发展,远程网络教学的社会需求越来 越多,教育层次也越来越多样化,这对传统的教学模式产生了前所未有的巨大 冲击。传统教学模式中采用的教师与学生间的面对面交流对于学生准确理解教 师的意图、教师及时掌握学生的反馈信息,以及人们长期以来的学习习惯等诸 方面有着先天的优势。然而。优秀师资的匮乏、教学内容的多样化、学生素质 的巨大差异、教师的教学习惯与学生的接受能力之间的矛盾等又大大限制了教 学效果的大范围提高,制约了因材施教的实现,也难以实现为民众提供尽可能 多的受教育机会、体现更大程度e 的教育机会平等等问题。 基于此,目前大量国内外教育专家正在致力于研究远程教学模式与传统教 学模式各自的优劣,如何实现远程教学模式与传统教学模式间的优势互补,远 程教学活动的开展方式等,可见这方面的研究将很有价值。 1 1 1 课题的研究背景 全球范围内的计算机技术、通信技术以及微电子技术的发展给现代教育注 入了新的活力,大量使用现代传媒手段而开展的现代教育模式正是风起云涌、 百花齐放,电化教学、多媒体教学誊既代教学手段给课堂带来了新的生机,远 程教育的开展为普通民众提供了更多的受教育机会和更优秀的学习资源。它能 够较好地解决优秀师资匮乏、教学场地受限、教学方式单一等诸多传统教育模 式难以解决的问题,对于提高贫困、偏远地区教育质量,提供更充足的受教育 机会,提供形式更为丰富、灵活的教学以及各类职前或职后的培训等都有着巨 大约作用,因此黼教育的相关课题进行研究应该是很有意义的,是有较大 的实际应用前景的。当然,新生事物并不总是完美的,构建萄9 阡瞻息技术基 础上的远程教育戡在给我们带来新的机会的同时,它也同样具有自己急需要 解决的问题。 烈川师范大学硕1 学位论文 1 1 2 当前远程网络教育发展概况 目前在国内外广泛开展的远程教育方式主要包括广播方式与计算机网络在 线学习方式两种。其中,广播方式的远程教学活动容易开展,运行费用相对较 低,但它却是单向传播的,是种非实时的教学形式,根本没有及时的双向交 互,其应用领域相对受限。计算机网络在线学习的远程教育方式= 最大的特点即 是双向通信,它可以实现及时的双向交互,是种实时的教学形式,也正是各 国竞相研究和发展的现代远程教育模式。 各种文献资料显示,当前国内外| 殳入实际运用在计算机网络上的远程教学 平台都是基于视频流和音频流的,即将主课堂和分课堂的现场进行录像和录音 并以视频流和音频流的形式在计算机网络上实时传送从而实现远程教学的。这 种方式至少存在以下两点弊端: 1 ) 视频流和音频流的数据量相当大,这势必对网络带宽提出很高的要求, 使它难以大范围应用。特别是对于国内目前的网络现状,普遍的网络带宽很低, 高带宽的网络线路运行费用太高,增加了系统运行成本,更难以在偏远山区开 展;而实际上最需要大量开展远程教育的地方又恰恰是经济相对欠发达的地区 和偏远山区。 2 ) 教学现场通过录像和录音并以视频流和音频流传送到远端再进行信号 还原后,其信号质量必然会有较大的损失,因为信号的采集和压缩过程都是有 损的,要达到更高的信号质量必须以更大的数据流量作为代价。受损信号用于 教学必然会影响教学效果,影响远程教育活动的开展。 1 2 “基于命令流的远程教育平台”课题来源及框架概述 “基于命令流的远程教育平台”这一四川省级科技厅应用基础课题正是针 对当前远程网络教育发展现状而产生的,其主要研究内容是搭建整个远程教育 平台的一体化解决方案,把常规远程教学活动中在计算机网络上传送的大量的 字符命令流、视频流以及音频流以二进制命令流来代替,从而减小存储空间。 降低远程教育设施成本。图1 - 1 是整个远程教育平台的数据流图; 2 四川师范大学硕士学位论文 以消息形式ll 通过商效的命令il 形成标准敦学内 捕获系统全u集耐捕获的消息u 容( 一个奇令唯 韶输入指令 ii 标睫化il 映射个内容) 服务器端( 主谋堂)发送 r 。型兰兰二二一:二二二鬟 分课堂端教学过程li 还原为标ll 设计特定命令解 再现系统进行教学i - 一准教学内i 一释器对文件进行 内容重放 ii 容il 解码( 编码的逆过 终茗接 收 整个系统的杨0 思想是“基于命令流传输”。消息命令如何产生? 要先对 远程教学活动中的大部分教学内容进行分解,并把分解后的教学内容规格化, 然后制定出个标准的命令格式集,建立单步教学内容与命令流的映射关 系。在教学的主课堂端由计算机后台程序将标准的教学内容进行单步截获,再 由特定的编码器进行编码,把结果以命令流的形式传送至各远端教学终端( 分 课堂) ,在每个教学终端配置对应的命令解释器进行实时解码,解码后的指令 在平台后端将用于视频和音频的再生。通过图示对整个平台的大致框架进行进 一步了解并划分关键功能模块如下: 1 ) 捕获;建立捕获机制,对主机端操作所产生的命令、消息进行捕获; 2 ) 重现:建立“映射机制”对所截获的消息、命令还原、再现; 3 ) 传输:实现点对点之间的传输,完成主课堂与各教学终端间的实时通信; 4 ) 控制:建立异常控制机制,处理同步、异步、实时等差错控制; 1 3 课题的研究目标和推广意义 课题的最终目标是要把常规远程教学活动中在计算机网络上传送的大量视 频流和音频流以命令流来代替。所提出的在计算机网络上的基于命令流方式的 文件 编准编定标容特对内计器学设吗救 通蓿机 四川i 师范大学项- j 学位论文 远程教学平台是信息技术在教育中应用方式的个大胆尝试,具有很大的创新 性,它打破了人们习惯性的认识,创新性地提出在远程教学过程中采用命令流 来实现教学互动。同时,本课题的提出正是针对目前的远程教学平台在数据量 上太大以及信号质量较低的弊端,它有着巨大的研究价值和实际应用前景,特 别是对于我国当前这样的网络基础设施而言,本课题的研究更具有迫切性和现 实性。 1 4 “基于编码机制的命令编辑解释器”产生及研究意义 本文主要研究的“基于编码机制的命令编辑解释器”源自于该课题,通过 对整个教育平台课题的分析、理解,加深了对消息编码解码机制的认识,什么 是编码机制? 即是通过对以n 3 2 环境下各种消息命令的编码格式进行分析,寻 找消息命令及其在操作系统中所运行的潜在规律,建立消息映射机制,提炼消 息处理模型,以期完成对消息命令的解释,实现再生、重现。基于此编码机制 之上的命令编辑解释器可理解为整个课题的核心算法。图2 结合整个:平台模块 的划分展示了命令解释器逻辑组成,包括捕获和重现模块,显示了其在整个平 台中的核心地位。通过对它的研究,可以推动整个课题的进度,促进各个功能 模块的实现。本文以解决方案的思想,紧扣“基于消息命令流”这一主题,逐 步阐述其设计原理,围绕如何对消息进行稳定、高效的捕获,以及怎样建立映 射机制对捕获的消息进行还原等难点问题进行分析说明,最终实现解决方案。 4 删川师范人学硕i 学位论文 第二章w i n 3 2 消息机制分析 在对当前国内远程教育现状的了解,绝大多数教学终端采用的是主流微软 w i n 3 2 位操作系统,因此选择基:y - w i n 3 2 操作系统环境进行研究更具针对性,最 终目的:建立w i n 3 2 下“消息消息函数映射机制”完成操作命令捕获和再 现。 贯穿整个课题的杨1 ) 思想是“命令流”,在操作系统中,命令流是指消息所 对应的二进制码值,不同的码值代表不同的消息。什么是消息? 消息有所不同 吗? 为什么要对消息进行捕获? 怎样捕获? 如何处理捕获到的消息? 从消息 入手,对酊n 3 2 操作系统内部消息运行机审掇阶:分析。 2 1win d o w s 操作系统消息原理概述 w i n d o w s 是以消息为基础,以事件驱动的。消息系统对于个订n 3 2 程序来 说十分重要,它是个程序运行的动力源泉。个消息,是系统定义的一个3 2 位的值,唯一的定义了个事件,用户通过建立硬件输入事件来驱动应用程序, 这些硬件( 如鼠标、键盘) 输入事件会产生诸如 w i n _ k e y * ,w m _ m o u s e m o v e ,w m _ ? b u t t o n * v 等消息,消息在w i n d o w s 操作系统中被定 义为种数据结构,包含不同的参数。不同的消息其参数格式不同,所代表的 用户操作和应用程序的状态也就不同f 1 嗣。w i n d o w s 中,消息遵循其命令传递机 制流动,当 w i n d o w s 应用程序等待到消息后通过向线程的消息队列中登记消息, 并遵循消息映射机制直接触发响应相对应的事件发生,完成再现。图2 1 展示 了w i n d 佣s 操作系统内消息运行原理。虚线框内部分是第章提到的控制模块, 包括原始输入线程和虚拟输入队列( 前者是系统初始化时所建立的特殊线程) , 该控制模块作用是控制消息队列中的消息某时刻只能由个线程所控制的窗 口函数处理,这样就不会使个挂起的线程妨碍系统中其他线程接收硬件输 入,增强了多任务操作系统的强壮度。 叫川师范大学硕j 学位论文 图2 _ fw i n d o w s 内部;肖患运行原理 2 2 深层次理解消息机制 通过e 节阐述,对w i n d o w s 操作系统消息的结构、消息队列、消息映射和 命令传递机制、消息处理有了初步认识。而消息有具体的属性、特点是什么? 怎样分类消息并能模拟w i n d o w s 进行消息的自定义处理? 如何捕获消息? 本 节将深层次详细分析w i n d o w s 消息和命令传递机制。 2 2 1 消息的属性 消息作为个记录传递给应用程序,这个记录中包含了消息的类型以及其 他信息。例如,对于单击鼠标所产生的消息来说,这仰已录中包含了单击鼠标 时的坐标。这个记录类型叫做n i s g ,m s g 含有来自w i n d o w s 消息队列的消息信 息,w i n d o w s 中声明如下【3 】; 6 四川师范大学顼1 学位论文 t y p e d e fs t r u c tt a g m s g h w n d h 帅d :接受该消息的窗口句柄 u i n tm e s s a g e ;消息常量标识符,也就是我们通常所说的消息号 w p a r a w p a r a m ;3 2 位消息的特定附加信息,确切含义依赖于消息值 l p a r 蛳i p a r a m ;3 2 位消息的特定附加信息,确切含义依赖于消息值 d w o r d t i m e ;消息创建时的时间 p o i n t p t : 消息创建时的鼠枥光标在屏幕坐标系中的位置 m s g : 在整个操作系统中,消息都是以这样的数据结构形式流动的。每个消息都 有个标识符的值,系统保留消息标识符的值在o x 0 0 0 0 到o x 0 3 f f ( w m _ u s e r - 1 ) 范围。这些值被系统定义消息使用,应用程序不能使用这些值给自己的消息定 义。应用程序消息从w m _ u s e r ( o x 0 4 0 0 ) 至u o x t f f f ,或o x c 0 0 0 到o x f f f f = w m _ u s e r 到o x 7 f f f 范围的消息由应用程序自己使用:o x c 0 0 0 到o x f f f f 范围的消息用 来和其他应用程序通信,这里列举出具有标志性的消息世”: w mn i j - _ 0 x 0 0 0 0空消息 o x o o o l 0 如0 8 7主要是窗口消息 o x o o a 沪- 0 x o o a 9 非客户区消息 o x o l o 旷- 0 x 0 1 0 8 键盘消息 o x o lll 0 x 0 1 2 6菜单消息 o x o l 3 2 o x o l 3 8 颜色控制消息 o x 0 2 0 伊- o x 0 2 0 a 鼠标消息 o x 0 2 1 1 0 x 0 2 1 3菜单循环消息 0 x 0 2 2 沪- o x 0 2 3 0多文档消息 o x 0 3 e o - _ o x 0 3 e 8叻e 消息 o x 0 4 0 0m , l u s e r o x 8 0 0 0雕 p p o x 0 4 0 旷- 0 x 7 f f f应用程序自定义私有消息 2 z2 消息分类: 按发送路径分两种:队列消息和非队列消息; 7 四川师范大学硕j 。学位论文 按消息的来源分为:系统定义的消息( 如:硬件输入消息w m _ m o u s e m o v e ) 和应用程序定义的消息( 如:u s e r 3 2 的w mc r e a t e 消息) : m f c 下消息分类:w i n d o w s 消息、控件通知消息、命令消息三大消剧2 。 w i n d o w s 所产生的消息不外乎以上几种情况,通过分类消息理解消息的属 性,本节综合三种消息分类思想,结合对各类消息的分析与归纳有助于建立映 射关系,理解编码解码帆俸4 。 2 2 3 _ f c 的消息机制的实现原理和消息处理的过程 1 ) 标准w i n d o w s 消息( 州一x ) 【x ) 的接收和处理 窗口消息是系统中最为常见的消息,它是指由操作系统和控制其他窗口的 窗口所使用的消息,例如c r e a t e w i n d o w 、d e s t r o y w i n d o w 和m o v e w i n d o w 等都 会激发窗口消息,单击鼠标所产生的消息也是种窗口消息1 2 j 。找出该类有哪 些消息,处理这类消息的宏,处理过程是怎样,如何实现将消息与头文件定义 的操作映射,有助于进步实现此类“消息消息处理”机制,例如: 宏名称对应消息消息处理函数 o n w m c h a r w m _ c h a r o n c h a r o n j mc l o s e w mc l o s eo n c l o s e 艘缆侧窿 w mc r e a t eo n c r e a t e o n w m d e s t r o yw m _ d e e f r o y o n d e s t r o y 0 n ! | i i mi 矧r r r 咖p删l b u t t o n u po n l b u t t o n u p o n 删 1 0 i i s b l o v e 删 1 0 i i s 日鲫v e o n m o u s e m o v e o n i 釉l p a i n tw m _ p a i n t o n p a i n t 洲州l b i 们环d 0 州州:i b 【r r i 例d 0 蝌0 n l b u t t o n d 0 咖 w i n d o w s 消息首先在“消息缓冲池”进行消息匹配,若匹配成功,则调用 相应的消息处理函数:若不成功,则在消息目标的消息映射数组中迸行查找匹 配,看它是否处理当前消息。如果消息目标处理了该消息,则会匹配到消息处 理函数,调用它进行处理:否则,该消息没有被应用程宁处理,返回值进行默 认处理。“消息缓冲池”是为了提高消息匹配任务效率而设计的,相当于个 8 四川师范大学硕士学位论文 哈希表,把要处理的消息和匹配到的消息映射条目( 条目包含了消息处理函数 的地址) 以及进行消息处理的当前类等信息构成一条缓冲信息,放到缓冲池中 ( 可以放5 1 2 条最新用到的消息映射条目的缓冲信息) ,每一条缓冲信息是哈 希表的一个入口,再用哈希查找来查询消息映射缓冲池,如果以后又有同样的 消息需要同个类处理则直接从缓冲池查找到对应的消息映射条目就可以了 ”w i n d o w s 消息接收处理流程图见图2 - 2 。 通过分析该类消息映射机制总结如下:大部分标准w i n d o w s 消息命令都 是进队消息,基本是用户输入的结果,以击键( 咖_ k e y d o m a ,w m _ k e y u p ) 产 生的字符( z n _ c h a r ) 和鼠标移动( w m _ m o u s e m o v e ) 的形式给出,还包含时 钟消息、刷新消息和退出消息,不进队消息则是其他的消息,来自于调用特 定的w i n d o w s 函数,例如当w i n m a i n 调用c r e a t ew i n d o w 时,w i n d o w s 将创 建窗口并在处理中给窗口过程发送个硼r e a t e 消息。键盘和肼生的 进队消息也能在不进队中发生,比如在键盘鼠标选中个菜单时键盘和鼠标 消息就是进队的,而说明菜单选中的w mc o n m m d 消息则可能是不进队的。 这些消息都是以种同步的、有序的方式进出的。 吒下对 亥类型消息建立 “消息缓冲池”以及采取哈希查找算法进行“消息一消息处理过程”的匹配 9 四川师范大学碗士学位论文 过程即是微软硝肖息的编码解码栅卧其所采用的“池化思想”在建立编码 解码机制理论上起重要作用9 ”。可以试捕获一个“记事本”内的鼠标和键盘 操作所触发的诸如鼠标移动、鼠标按键消息,序列化,并调用相对应处理函 数w i n d o w s 命令再现( 即是消息映射) 。 2 ) 命钓肖,r - c 哪一c o 蛐a n i ) ) 的接收和处理 命令消息是一种特殊的窗口消息,用来处理从一个窗口发送到另个窗口 的用户请求,其对应规贝蝇晓;式如:侧蚴( ( i d , ) 州c 0 嘲 陋( i 蹦 阳m o n a x m o ,o n0 0 螂 n d ( i d 蛆_ f i 咖,o n f i l e n e w ) 在s d i 或者m d i 应用程序中命令消息由用户界面对象( 如菜单、工具条、 加速键) 产生见图2 ,标注了各类u i 界面对象。 图2 3w d i 应用程序u i 界面对象图 通过分析其界面各类对象所产生的命令见下表阅: “新建”、“打开,”关闭”、“保存”、”另存为“、。页面设置”、。打 。文件喋单命令:印设置。打印印预i 览傀出1 砌鄹丘用过的文件 1 0 四川师范大学顼j :学位论文 ”编辑愫单命令: ”清除”,“全部清除”、“复韦忆”剪切”、”查找”、“粘贴”、。重 复”、“替换”、”全选”、“撤消1 矿重复, ”工具栏”和r 状态栏” ”视图噪单命令: ”新建”,“排列”,”层叠”、“水平平铺”、”垂直平铺等旷拆分” ”窗口僳单令 “索引”、”使用帮助,矛旷关于” ”帮助璨单命令: ”o l e ,命令 ”插入新对象”、”编辑链播r ,嚆贴链接”、”选择黼贴”和 t 1 p e n a m e 对象 ( ”编辑嗓单) 以上图和表为例整理归纳此类消息的处理方式见下 2 】: 菜单内容命令项d 默认处理函数 n k df 雌n e w df n o p 刚 df 眦a 艘 毋f 眦s a v e d f 脏s a v 队s df p 蝴 df 脏p 妯盯p 趾愀 df 雎p 盯s e 删p ) f m r uf e 1 4 d p p 唧 d 肼u q d o d 鲫c l r r d 肼o o p y d 肼p s t e c 啪n a 形:k w a 帕t a 孵舳k o p a ) o 伽m 眦:o _ l f 证o o 辨 c i ) o c u n w = t :o n f b e s a v e a ) c a m 眦:o 删c s 甑电船 c v k w :o n f i w :p r k : c v i e w : o n f d 黼 a 瞻徂弗:o l 峤奸商e h l i p a 怖l a p p :q o p r 日呼钍e a a 形n 唰止垃 n o n e n o n e :翌 协 协 = 曼 = 彗 苦 :了|i|盏: 四川师范大学硕j 学位论文 dy i e w :o l b a r胁m 酣 ,玎d :加鼬。础 y e s 迥聒蜓s 崩啦西蝠 f r a m e w n d :o n b a c i m :k协 w i n d o w ( m d l m d y ) n m v w i n d o w 勘3 踊m d i f r a t m w r , d :o n w i m b w n t w e 琦&i dw i n d o w md伊曲佳w磁:0n1rmdou倒_cascaoe t i l emw r n d o w1 1 mh o g zm d i f r a r m w n d : o n w m d o w c m d a n m g * k :e mpw 烈d o w r r a n g em d i f r a m w r , d :o n w 幽c n x i h 咖 a b o u t 珥i n m t mm pa m x j _ rn o n e 注意:“是否预有关联”如果是y e s ,意指程序菜单中有此命令项,当被单 击自然会引发命令处理程序,也就不需要在任何类 筘j m e s s a g e m a p 中拦截此类命 令消息;如果是n o 。则必须在应用程序中拦截此类消息,按照册c ! | 寺殊的“命 令路由c o m m a n d - r o u t i n g ”进行消息传递,直到找到对应的消息处理函数为止。 通常,由u i 界面产生对象的命令消息送给主边框窗口,窗口过程把命令传 递给m f c 主边框窗口对象,开始命令消息的分发,m f c 边框窗口类c f r a m e w n d 提供了消息分发的能力,例如按下一个按钮,就会向主窗口发送个命令消息。 主边框窗口使用标准t , f c 窗口过程处理命令消息,但与标准w i n d 呷s 消息的处 理相比,命令消息的处理对象范围广得多,不仅可以由窗口类处理,还可以由 文档类,文档模板类及应用类进行多次特殊处理,也就是“命令路由 c o m m n d - r o u t i n g ”消息传递。通过对该类消息处理方式大致归纳如图2 - 4 所 示嗍: : 四川师范人学硕1 学位论文 - :m s g 删玎 :j 图2 - 4 命令消患处理机制 由于命令消息处理的复杂性,可通过应用举例说明该类消息的机制:使用 a p p w i z a r d 产生一个单文档应用程序t ,从h e l p 菜单选择“a b o u t ”,就会弹 出个a b o u t 对话框,a b o u t 对话框系统未定义,须自定义,从命令消息的发 出到对话框弹出的过程可以试捕获下来,消息截获一编码一存入d o c u m e n t - * 消息映射一解码一v i e w 显示。 总结m f c 下各类命令所对应的i d 在文件中表示( 或者句柄值) 如下: # d e f i n ei d i l e 砭0 x e l 0 0 # d e f i n ei d _ f i le0 唧0 x e l 0 1 l i d e f i n ei df i l e _ 邮e0 x e l 0 2 # d e f i n ei dh l es a v eo x e l 0 3 # d e f i n ei f ) h l es a v e _ a s0 x e l 0 4 # d e f i n ei df i l e 姗jf i r s t0 x e l l 0 # d e f i n ei d _ f i l el f l t uf i l e l0 x e l l 0 瑚g e 一1 6m a x # d e f i n ei d _ f i l e 删f i 点2o x e l l l | 髓i tc o m m a n d s 3 四川师范大学硕i 。学位论文 g d e f i n ei o e d i tc l e a r r , d e f i n ei d e d i t c l e r ll # d e f i n ei d e d i t c o p y g , d e f i n ei de d i ta u t 娥j e f i n ei de d i tf i n d # d e f i n ei de d i tu m ) 0 # d e f i n ei de d i tr e d o 0 x e i 加 0 ) 【e 1 2 l 0 x e l 2 2 o x e l 2 3 呲1 2 4 o ) 【e 1 2 b 呶e 1 2 c 3 ) n o t i f i c a t i o n ”控件通知消息( w i l l n o t i f y ,b n x x x ) 的接收和处理: 控件通知消息是种特殊的消息,指个窗口内的子控件发生了些事情, 需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、 编辑框,以及w i n d o w s 公共控件如树状视图、列表视图等。例如,单击或双击 一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息,类 似于命令消息,当用户与控件窗口交互时,控件通知消息就会从控件窗口发送 到它的主窗口。但是这种消息的存在并不是为了处理用户命令,丽是为了让主 窗口能够改变控件,例如加载、显示数据。例如按下个按钮,向父窗口发送 的消息也可以看作是个控件j 恿知消息,单击民际j 听产生的消息可以由主窗口 直接处理,然后交给控件窗口处理盯j 。 与命令消息比较掌握此类消息属性,相似但有所不同,主要不同是在处理 控制通知消息时没有消息分发的过程即“命令路由”,控制通知消息最终肯定 是由窗口对象处理 虽然通知消息的传递未经过“命令路由”,但是它有自己的另外种机制, 即“消息反射”:w i n d o w s 控制常常发送通知消息给它们的父窗口,通常控制 消息由父窗口处理,但是在m f c 中,父窗口收到这些消息后,或者自己处理, 或者反射这些消息给控制窗口自己处理,或者两者都进行处理。其处理过程大 致如下图2 5 所示。 四川师范人学硕- j + 学位论文 图2 5 控件通知消息“消息反射”机制 控件通知消息很重要使用也较多。常见的几个控件通知消息如下表: b n _ c l i c k e d 用户单击了按钮 b n _ d i s a b l e 按钮被禁止 b n _ d o u b l e c l i c k e d 用户双击了按钮 b n _ h i l i t e 用户加亮了按钮 按扭控件b n _ p a i n t 按钮应当重画 b n _ u n h i l i t e 加亮应当去掉 i ! l f 川师f j 芏大学硕t 学位论文 c b n _ c l 0 6 e u p 组合框的列表框被关闭 c b n _ d b l j c l k 用户双击了一个字符串 c r n _ d r o p d o w n 组合框的列表框被拉出 c b n - e d l l 眦n g e 用户修改了编辑框中的文本 组合框控件c 斟q _ e d i t u p d a t e 编辑框内的文本即将更新 c b n _ e r r s p a c e 组合框内存不足 c b nk i l l f ( l - u s 组合框失去输入焦点 c b n - s 阻c i a n g e 在组合框中选择了项 c b 邺e l 日粼e l 用户的选择应当被取消 c b n - s e l 日岫0 i 【用户的选择是合法的 c b n - s e t f 0 c u s 组合框获得输入焦点 斟c r i n g e 编辑框中的文本已更新 e ne r r s p a c e 编辑框内存不足 邮呲用户点击了水平滚动条 编辑框控件e n _ _ k i l l f o c u s 编辑框正在失去输入焦点 斟_ m a x t e x t 插入的内容被截断 科s e t f o c 晒编辑框获得输入焦点 斟u p d a t e 编辑框中的文本将要更新 斟v s c 跗l 用户点击了垂直滚动条消息含义 l b nd b l c l k 用户双击了项 唧艘s p a c e 列表框内存不够 l i 虬k i l l f o c u s 列表框正在失去输 焦点 列表框控件l b n _ s e l c a n c e l 选择被取消 l 8 n _ s e l o a n g e 选择了另项 i j 3 n _ s e t f o o j s 列表框获得输入焦点 1 6 四川师范大学颈十学位论文 “n o t i f i c a t i o n 消息”对应机纬4 的宏婶: 件所对应宏不同,每个控件给出了个例子) 控件宏名称 ( 对控件本身进行分类,不同的控 o n b n c l i c k e d ( , ) o n c b n d b l c l k ( , ) o n e n s e t f o c u s ( , ) ( i n l b n d b l c l k ( , ) 消息处理函数 m e m b e r f m m e m b e r f x n m e m b e r f x n m e m b e r f x n 可试捕获在“w o r d 文档”中拖动滚动条所产生的控件消息并完成再现。 2 3w i n 3 2 消息机制分析总结 以上主要对肝c 消息和命令传递机制进行了分析,各种消息的产生方式不 相同,其属性和各自特点决定其在系统中的传递机制不同,但都遵循微软“消 息泵”机制,严格按照w i n d o w sm e s s a g em a p 这张巨大的消息网进行分流,由 子类至父类层层查找所对应的处理函数,最终实现消息映射。通过对w i n d o w s 消息处理机制的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论