已阅读5页,还剩58页未读, 继续免费阅读
(教育技术学专业论文)教学vod网站客户端插件的设计与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 在网络与通信技术飞速发展,丽络上的宽带应用鼙指数增长的大环境下, 教育教学网站提供v o d 服务已成为可彳亍而且必然。为了让用户真正享受v o d 的便利与快捷,提供好的影片分类与索引服务就成为蓖巾之重。 本文酋先分析了当前流行的v o d 网站实现方法之利弊,并在此基础上提 出了使用“平台+ 插件”软l 孛开发框架。软件播件的开发是有翔予传统软件开 发的另一熏要开发模式。这种方式可以很好地解决软件合作开发与集成问题。 我们已经习惯于一个人独立进行软件开发,每个人都使用自己的风格进行 程序设计,但随着工程项目变大或者是对时间要求比较紧时,就需要几个人, 卡几个人,甚至是上百个人协作进行软件开发与设计,这时一个比较棘手的润 题就是如何将若于人所编写的软件代码( 有可能是链接库、组件) 进行无缝地 集成,纵然进行源代码集成是个比较传统也比较成熟的方式,适当使用链接库 或缀件,也可减少源代码的泄露,健经常瓣寸主况是每一次的程序集成和代码维 护都需要熏新编译与链接源代码和重新发毒新软件,这种工作有时又是非常癍 烦的。那么就有疑问产生,能不能有一种方法将需要开发的目标软件分为若干 功能部件,各部件之闻遵循蓄标准接口规定,这样在各个部件按要求开发之后, 在进雩亍整个软件集成时只是将需要的部件进行缎装,两不是集成各源代码或链 接库进行编译与链接,需要新的功能组件时也是按规定丌发,之后只进行组装 软件就可醣使用,这就是使掰二进制的软件集成方法。答案是肯定的,这就是 “平台+ 插件”的软件设计方法。 另外,对有版本级别的软件开发插件更为有用。高级版的软件安装有高级 版的插件,低级版的软件不安装高级版的插件,这就给程序分发和开发带来极 大黔馒祠。另外对于有系列化功能睁软件,系歹0 亿的功能可国插俘实现。宣的 思路和设计方法是可行的,可以应用到我们的具体软件开发上。 本文对插件的原理、实现方法、分类、开发插件的必要机理予以阐述,并 使用插件方法实现了一个教学v o d 站的客户端,将v o d 站点的分类与索引 数据以w i n 面w s 区对象的形式搬务于用户,在使用匕实残了透明性,方便了 用户使用,插件与i e 浏览嚣无缝结合,扩充了w 曲b r o w s e r 的功能,为理解 w i n d o w s 下的编程,理解w i n d o w s 的系统结构,为开发其他的类似应用提供 了有效的解决方案。 关键词:v o d插件w i n d o w s 区对象c o m l e 浏览栏 t h ed e s i g na n d 霹e v e l o p m e n t o fp l u g i n so fi n s t r u c t i o nv o ds i t e sc l i e n te n d a b s t r a c t i t i sv i a b l ea n di 珏e v i t a b l et h a te d u c a t i o na n di n s t m c t i o ns i t ep r o v i d e sv o d s e r v i c eo nt h eg r e a te n v i r o n m e n tt h a t e t w o r ka n dc o m m u n i c a t i o n st e c h n o l o g y h a v eb e e nd e v e l o p i n ga tv e r yf a s ts p o e d f o “h es a k eo fm a k i n gt h eu s e re n i o yt h e v o d sa d v a n t a g ea n ds h o r c c u t ,s e r v i c ew h i c hp f o v i d e dg o o d 靠l mc a t e g o f ya n d i n d e xo f f e r e db ye d u c a t i o na n di n s t r u c t i o ns i t eh a v eb e e nm o s ti m p o r t a n t f i r s to fa 1 1 ,t h ea r t i c l ea n a l y z e da d v a n t a g e sa n dd i s a d v a n f a g e so fr e a l i z a t i o n s m e a n so fc u r r e n tp r e v a l e n tv o d 鲥t e ,a n dm e nb r i n gf o r w a r du s i n g “翔a t f o r m & p l h g i n ”s o f t w a r ed e v e l o p m e mf r 锄e 、r k t h ed e v e l o p m e n to fp l u g i ns o f t w a r ei s a n o t h e ri m p o r t a n td e v e l o p i n gm o d et h a ti sd i f 艳r e n tw i t ht r a d i t i o n a ls o f t l a r e d e v e l o p i n g t h em e t h o dc a ns o l v et h ep r o b l e t no fs o r w a r ec o o p e r a t i o na n d i n t e g r a t i o n 。 ,eh a v e b e e na c c u s t o m e dt oc a “yt h r o u g hs o n w a r ed e v e l o p i n ga l o n e , e v e r y o n ed op r o g r a m m i n gb yo n e ss t y l e w h e nt h ep r o j e c tg e tl a r g e ro rs h o r to f t i m e ,w es e v e r a lo rm o r et h a nh u n d r e dp e o p l et e a mu pt op r o c e s ss o r w a r e d e v e l o p i n ga n dd e s i g n a n dt h e nah a r dn u tt oc r a c ki s h o wt o i n t e g r a t et h e s o f t w a r ec o d e ( m a y b e l i m d n g l i b r x 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究j 二作及取得的研究成果。尽我 所知,除r 文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研 究成果,也不包含为获得盘盗竖整盘鲎或其它教育机构的学位或证陆而使川过的材料。 与我一同t 作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示了谢意。 签名:细刮卜日期:,占z p 学位论文版权使用授权书 本人完全了解天津师范大学有关保留、使用学位论文的规定,即:学校有权将学位论文 的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描筲复制手段保存、汇 编以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复印什和磁盘。 ( 保密的论文在解密后应遵守此规定) 签名:铀诳导师签名:整 日期: 矿占毒8 第一章开发背景与综述 1 1 项目背景 随着全球进入网络与信息时代,利用网络进行教学与辅助教学,已成为教 育教学的麓要手段。中四十几年因特网的高速发展,宽带的篙求急捌增长,对 代呼唤全新一代的基础设施,现代网络与通信技术的飞速发展,使得电信网络 基础结构正在发生本质的变迁,电信的f 日格局正在打破。 过去的2 0 0 1 年被称为中国网络业的“宽带年”。当前,中国电信、中国联 通等基础运营商在全国的骨于网建设上投下巨烫,宽带“最后一公里”成为目 前竞争的焦点,其接入热潮已经在全国各大城市兴起,宽带建设正在上演一幕 “圈地运动”。 在这榉的大环境下,网络上的宽带应用呈指数级的增长。视频点播服务 ( v o d ) 曩三在如火如萦地发展,各大互联网服务商和部分个人网站,都开始提 供视频点播服务。 1 ,2 综述 v o d 的快速发展使我们想到,作为大量进行网络应用和网络开发的教育 行业,在传统豹教育教学中我髑积累了大量魏宝贵经验,制作了大量教学片, 如能放到网上就能使更多的人受益。诚然,目前有不少这样的作法,但是大部 分却并不尽如人意。所采用的方法要么是脚本语言,要么是高级一点的脚本, 妇a s p 。 它所爨来的是技术上的实现,蔼不是虮铡匕的,由此引申出众多豹闷题, 如影片的分类与检索很不健全,增加了客户端的负担,并非足真正的c s 或 b s 结构只是准的等等。如果能在客户端实现一个从机制上、原理上真正与影 片站点进行直接遴飘豹结构,并对这些影片进行各耱分类和提供了影片搜索强 务,上面融这些问题就会遮刃酉勰。曩前,提供更好的影慝1 分类与索引服务也 是各大v o d 删站竞争的- - 个重要方面。 本文详细探讨了如何对操作系统进行扩充,并采用插件技术扩展w e b b r o w s e r 的功能,通过对i e 的改造以实现和浏览器无缝结合的教学v o d 臃站 的客户端实现的全部细节。 第二章插件的原理及分类 2 1w e b 浏览器加裁项( 插件) w 曲浏览器加载项向w 曲浏览器中添加了多种功能( 如额乡卜的工具栏、 动两鼠标指针、投票行婕收报器翻弹出广告阻止程序) ,这会使测览更加有趣 或高效。对于插件可以执行的操作有:更新、禁用和启用。( 如图2 1 所示) 图2 1 i e 中的加载项 2 2 插伟原理与实现方法 插馋豹原理就是通过统一豹程序接墨束蠲髑不弼的模块,良实现不圜功能 的调用,对主程序进行扩充。 插件技术的实现,一般都是先定义好一个接口结构。这个结构包含了主程 序要引用的接口函数的指针。当然,这些接口函数的格式必须是事先定义好了 的。两在捶件d l l 中一般只有一个导出爱数,剥霹这个导出函数,我 v 】可以 得到接口结构的指针。这样主程序就可以通过指针来使用插件模块中的功能 了。 2 3 擂伟薅于软件开发的意义 自从微软为用户们留下了应用接口开始,包括微软在内,各方程序员都为 i e 浏览器开发出了很多插件程序。如有些软件则借助插件程序来配合其服务端 程序一道工作,来达到其预期的目的( 例如像网上银行、在线杀毒) 。 我们融经习惯于一个人独立进行软件开发,每个人都使用自己的风格进行 程序设计,僵隧着工程顷鹜燮大或者是对辩闻要求跣较紧时,就需要几个人, 十几个人,甚至是上百个人协作进行软件开发与设计,这时个比较棘手的问 题就是如何将若干人所编写的软件代码( 有可能是链接库、组件) 进行无缝地 集成,缀然进行源代码集成怒个比较传统也比较成熟的方式,适当使用链接库 或组 孚,也可减少源代码的泄露,但经常的情况是每一次的程序集成和代码维 护都需要熏新编译与链接源代码和熏新发布新软件,这种工作有时又是非常麻 烦的。那么就有疑问产生,能不能有一种方法将需要开发的目标软件分为若干 功能邦4 孛,各部 孛之间遵循蔚标准接口规定,这榉在各个邦件按要求开发之后, 在进行整个软件集成时只是将需要的部件进行组装,而不是集成各源代码或链 接库进行编译与链按,需要新的功能组件时也是按规定开发,之后只进行组装 软 牛裁可以使用,这就是搜搦一种二进制的软 牛集成方法。答案是肯定的,这 就娥“平台+ 插件”的软件设计方法。 2 4 已有的软件系统( 平台+ 插件) 介绍 现在就来看看所有软件系统的根一一操作系统( o s ) 。操作系统是系统 软件,是计算机不可缺少的关键软件,只有安装有操作系统的计算机才能为人 所用,才能变为真正的计算工具。操作系统除完成其基本功能以外,还为软件 开发人员提供了应用程序开发接口( a p i ) ,软件开发人员使用a p l 进行软件设 计与代码编写,程序调试编译以后,安装在所依托的操作系统之后,用户丌发 的软件( 可分为工具软件和应用软件) 就可以正常运行。而这时并不需要对操 作系统进行修改,也不需要重新编译和链接操作系统,对于用户软件来说,操 作系统是完全透明的。操作系统与用户软件是一个极好的平台+ 插件实例。 除操作系统之外,在用户软件方面也有许多这种平台+ 插件的软件系统实 例,其中大名鼎鼎的就是a d o b e 公司的p h o t o s h o p 图形处理软件。p h o t o s h o p 除其图形处理功能卓越以外,还有一项给开发人员印象较深的就是其插件 ( p l u g i n s ) 功能。为了提高图形的处理功能,p h o t o s h o p 提供了标准插件开 发接口,这样第三方软件开发商就可以按标准插件接口开发独具特色的图形功 能扩展,丌发的插件安装后,系统即可使用,而不影响主程序和其它插件,通 过此种方法p h o t o s h o p 扩展了成千上万的滤镜( f i l t e r ) 功能插件。除p h o t o s h o p 外,使用插件技术的软件还有i e ,n e t s c a p e ,m a c r o m e d i a 公司的系列软件,以 及m i c r o s o f t 的s u a ls t u d i o 开发工具及o f f i c e 办公软件等。 2 5 插件技术的分类 各用户软件领域所应用的插件技术可分为文本插件、脚本插件和程序插件 三种类型。 2 5 1 类似批命令的简单插件( 文本插件) 事实上这种插件的自由度非常低。运行这种插件后,会一步步要求用户进 行选择输入,最后根据用户的输入来执行一系列事先定义好的操作。这种插 件般是文本文件。功能比较单一,可扩展性极小。优点是插件做起来非常方 便,即使是对程序设计了解不多的人也可以制作。如w i n a m p 的s k i n 。 2 5 2 使用一种特殊的脚本语言来实现的插件( 脚本插件) 这种插件比较难写,需要软件开发者自己制作一个程序解释内核。比如微 软惹了很多麻烦的宏就是这种类型的。m i c r o s o f to m c e 就提供了开发者用于扩 展辅助功能的内置v b s c r i p t ( v b a ) 。这种方法的优点在于无需使用其它工具 来制作插件,软件本身就可以实现,普遍出现于各种办公自动化软件中。 2 5 3 利用已有的程序开发环境来制作插件( 程序插件) 例如p h o t o s h o p 等软件使用的方法。使用这种方法的软件在程序主体中建 立了多个自定义的接口,使捅件能够自由访问程序中的各种资源。这种插件的 优势在于自由度极大,可以无限发挥插件开发者的创意,这种插件是狭义范围 的插件,也是真正意义上的插件。而这种插件机制的编写相对复杂,对于插件 接口之间的协调比较困难,插件的开发也需要专业的程序员才能进行。 本文主要讨论的是第3 种类型插件,即利用已有程序开发环境制作的程序 插件。 第三章理论、方法研究和应用的技术 3 1 平台+ 插件软件设计基本思想 插件的本质在于不修改程序主体( 平台) 的情况下对软件功能进行扩展与 加强,当插件的接口公开后,任何公司或个人都可以制作自己豹插件来解决一 些操作上的不便或增加新的功能,也就是实现真正意义上的“即插即用”的软 件开发。平台+ 插件软件结构是将个待开发的目标软件分为两部分,一部分 为程序的主体或主框架,可定义为平台,另一邦分为功能扩展或补充模块,可 定义为插件。 在进行软件开发之前,是否采用平台+ 插件结构进行软件开发,还要依据 具体的软件需求情况进行确定,但一般来讲,使用平台+ 插件结构进行软件设 计会给所开发软件增加新的生命力。当确定平台+ 插 牛的软 牛结构之后,就要 分析哪些部分功能由主体完成,即平台的慕本功能,哪些部分功能由插件完成, 即需要扩展的插件功能。平台所完成的功能应为一个软件系统的核心和蒸础, 这臻基本功能即可为用户使用,爱可为捶件使用,就是又可以把平台基本功能 分为两个部分,内核功能和插件处理功能。平台的内核功能是整个软件的重要 功能,一个软件的大部分功能因由内核功能完成。平台的插件处理功能用于扩 展平台帮镑理插件,为插传撮级平台和与捶件通信提供标准鹣平台扩展接口。 插件所完成的功能是对平台功能的扩展与补充,一般插件完成系列化功能。例 如:p h o t o s h o p 的滤镜插件完成对图形的特殊效果处理,这些功能都有一些共 性,可以进行集中管理,并巍可以定义国标准驰插件接口。 为了实现平台拯 牛结构瓣软件设计需要定义两个标准接日,一个为出平 台所实现的平台扩展接口,一个为插件所实现的插件接口。这里需要说明的是: 平台扩展接口完全由平台实现,插件只是调用和使用,插件接口完全由插件实 现,平台也只是调用和使用。平台扩震接曰实现插 譬淘平台方囊豹单向透信, 捶传通过平台扩震接翻可获毅主挺架的各种资源秘数据,可包捶各种系统旬 柄,程序内部数据以及内存分配等。插件接口为平台向插件方向的单向通信, 平台通过捅件接口调用插件所实现的功能,读取插件处理数据等。 平台的插件处理功能包括插件注册、管理和调用,以及平台扩展接口的功 能实现。插件注册是按照某秘机制酋先在系统中搜索已安装的插件,之后将搜 索到的插件注册到平台上,并在平台上生成相应的调用机制,这包括菜单选项、 工具栏、内部调用等。插件管理完成插件与平台的协调,为各插件在平台上生 藏黪理信慰臣及进行插件豹状惫跟踪。插件调用是调酒各捶 牛所实现的功能。 平台插件处理功能实现的另部分功能为平台扩展接口的具体实现。 3 2 平台+ 插件软件设计步骤 一般来说,进行平台+ 插件的软件设计大致经过如下步骤: ( 1 )确定平台基本功能和插件要完成的系剜化功能或扩展功能; ( 2 )定义平台扩展接口和攒件接口: ( 3 )完成平台设计,主要魑平台插件处理功能; ( 4 )向插件开发者提供主平台程序( 执行代码) ,公布平台扩展接口和插件 要实现的接口,可能包括开发溺的s d k ; ( 5 )插件开发者按要求开发插件,实现插件接口,开发者可使用提供的主平 台程序测试插件; ( 6 )主平台设诗者继续完成主平台的内核功能,并霹随辩公布新增加主平台 扩展接口和插件接口; ( 7 )实现4 6 步骤的良性循环,整个软件系统不断向前进化。 3 3 平金+ 插伟软件设计的优点 与传统软件开发模式进行对比,不难发现平台+ 插件开发模式其有: w p a 粕m ) ; i f ( v 珊t u r n n v i n k e y ) l p m s 分 w p ar 扫_ m = o ; :p o s t m e s s 嘟( g e t 眈,w m - s e a f c h v o d ,o ,o ) ; r e t u ms _ o k ; ) 1 h n s l a t e m e s s a g e ( 1 p m s 曲; d i s p a t c h m e s s a g e ( 1 p m s 曲; r e t u m s _ o k ; 添加代码,使得搜索条件编辑窗口能得到焦点 添加c v o d b a r 类的引用,在s e 猷c l l e d i t h 文馋中添加对c v o d b a r 类的声秘: 拌i n c l u d e c o n s ti n tw t v 重一s e a r c h v o d = w m u s e r + 2 0 2 4 ; c i a s sc v o d b a r : 为让类通知主程序区对象已经终到焦点,添加个e ns e t f o c u s 消患处理, 在s e a r c h e d i t h 文件中添加以下代码: b e g i n m s g m a p ( c s e a r c h e d i t ) c o m m a n d _ _ c o d e _ h a n d l e r ( e n s e t f o c u s ,o n s e t f o c u s ) e n 吼m s g m a p ( ) 在s e a r c h e d i t h 文件中添加o n s e t f o c u s 函数的定义,代码如下: u t e s u t ,to n s e t f o c u s ( w o r dw n o t i 母c o d e ,w o r dw l d ,h w n dh w n d c d , b o o l b a 1 1 d 】e d ) ; 在实现o n s e t f o c u s 函数前,定义一个函数让区对象告知其地址,以便需要的 时候饺月,在s e a r c h e d i t h 文 牛中添加以f 代弱: s t d m e t h o d ( 1 协s l a c e a c c e l e r a t o r l o ) ( i 中m s g1 p m s 曲; i ds e t 8 相d ( c v o d b a pp b a | l d ) ; p r i v a t e : c v o d b a p 翔p b 棚1 d ; 在s e a r c h e d i t c p p 文件中添加消息处联函数和s e t b a n d 函数,并且完善 a n s l a t e a c c e l e r 毪幻r i o 函数 在s e a r c h e d i t c p p 中添加头文件: 撑i n c l u d e ”m y v o d h ” 样m c l u d e ”v o d b a l h ” 在构造函数的成员初始化表中初始化mp 区对象,添加以下加粗显示的代码: c s e a r c h e d i t :c s e a r c h e d i t ( ) :m p b a n d ( n u l l ) ) 在s e a r c h e d i t c p p 中添加s e t b a n d 的实现,只是简单地保存区对象指针: v o j dc s e a r c h e d i t :s “b a n d ( c v o d b a r + p b a n d ) m p b a n d = p b a n d ;) 在s e a r c h e d i t c p p 文件中添加e n s e t f o c u s 消息处理函数: l r e s u u lc s e a r c h e d i t :o n s e t f o c u s ( w o r dw n o t i 付c o d e ,w o r dw i d ,h w n dh w n d c t l , b o o l & b h a i l d l e d l i f ( m _ p b a n d ) m - p b a n d 一 f o c u s c h 锄g e ( t r u e ) ;f e t u m0 ;) 当用户按【t a b 】键时,该窗口该通知区对象改变焦点,这里调用区对象的 f o c u s c h a i l g e 方法,该方法将在区对象中实现。在s e a r c h e d i t c p p 中添加以下 代码到t r a l l s l a t e a c c e l e r a t o r i o 函数中: s t d m e t h o d i m pc s e a r c h e d i t :t r a n s 】a t e a c c e l e r a t o r i o ( l p m s gl p m s 曲 i n tn v i m ( e y = ( i n t ) ( 1 p m s 争 w p 删n ) ; i f ( v k j 也t u r n n v i r c k e y ) l p m s g w p a r a r n 2 0 ; :p o s t m e s s a g e ( g e t p a r e n t ( ) ,w m _ s e a r c h v o d ,0 ,o ) ; r e t u ms o k ; e i s ei f ( w m k e 、r d o w n = = 1 p m s m e s s a g e n v i n l 沁y = = v k 一1 1 a b ) i f ( m _ p b 卸d ) r u b a n d - f o c u s c h 卸g e ( f a l s e ) ; r e t u ms f a l s e ; t r a l l s l a t e m e s s a g e ( 1 p m s g ) ; d i s p a t c h m e s s a g e ( 1 p m s 曲; r e t l l ms _ i o k ; , ( 2 )树视图窗口类 树视图用于将影片按树结构的方式组织成目录形式,以供用户查找影片。 此功能的实现同样需要得到系统的焦点,所以需要和搜索条件窗口相类似地保 存c v o d b a r 类的引用,提供设置c v o d b a r 类的引用方法s e t b a n d 函数和处 理e ns e t f o c u s 消息。 在v o d t r e e h 中添加如下代码: 婀f n d e i v o d t r e e h 一 # d e n n e v o d t r e e h 一 # i n c l u d e c l a s sc v o d b a r : 一2 6 b e o i n m s o m a p ( c v o d4 1 1 0 0 j b a r ) c h a l n m s g m a m e m 8 e r ( n l e d i t w n d ) c h a l n m s g m a m e m b e r ( m _ 1 h e w n d ) m e s s a g e _ h a n d l e r ( w m c r e a t e ,o n c r e a t e ) e n d m s g m a p ( ) l r e s u l to n c r e a i e ( u i n tu m s w p a r a mw p 啪m ,l p a r a m1 p a m m , b o o l & b h a n d l e d ) ; 增加按钮图标资源 在实现消息处理函数之前,需要插入一个图片资源,在工作区的资源视图中 添加一个i d 为i d 工一f i n d 的图标,并准备好一个图标文件。用鼠标右键单击项目 根节点,在弹出的快捷菜单中选择i m p o r t 选项。在弹出的对话框中选择要导入的 图标文件。单击i m p o r t 按钮,即可完成该图标的导入。用鼠标右键单击新导入的 图标,在弹出的快捷菜单中选择p r o p e r t i e s 选项。在弹出的对话框中修改图标资 源的i d 为i d _ f i n d 。( 如图4 4 所示) 采用同样的方法导入i d i l i b 、i d i m y v o d 、 i d ip a g e 、i d i _ s u b l i b 和i d iv o d 图标,用于显示树视图图标。 】墨| 4 4图标属性对话框 增加按钮资源符号 在工作区的资源视图中用鼠标右键单击资源根节点,在弹出的快捷菜单中选 择r e s o u r c es y m b 0 1 s 选项。在弹出的对话框中单击n e w 按钮,然后在弹出的对话 框中设置i d ms e a r c h v 0 d 资源符号的参数。依次单击o k 、c l o s e 按钮,关闭所有 对话框,即可完成按钮资源符号的添加。( 如图4 5 所示) 采用同样的方法添加 i d c 豫e ev i e w 资源符号,用于标识树视图。 图4 5 添加按钮资源符号 实现o n c r e a t e 函数 在v o d t 0 0 1 b a r c p p 文件中添加以下代码,包含相关的头文件: 撑i n c l u d e ”s t d a f x h ” 撑i n c l u d e ”r e s o u r c e h ” 撑i n c l u d e ”v o d t b 0 1 b 札h ” 在v o d t 0 0 1 b a r c p p 文件的构造函数中添加以下加粗显示的成员初始化表: c v o d t 0 0 l b a r :c v o d t 0 0 l b a r 0 :m _ h l m a g e l i s t ( n u l l ) 在v o d t 0 0 1 b a r c p p 文件的析构函数中添加以下代码,释放相关资源: c v o d t b o l b a r :c v o d t b 0 1 b a “) i m a g e l i s t - d e s t r o y ( m _ _ h i m a g e l i s t ) ; j f ( i s w i n d 0 w ( ) ) d e s 仃o y w i n d o w ( ) ; ) 完善o n c r e a t e 函数。在v o d t o o l ba r _ c p p 文件中,添加以下代码: l r e s u l tc v o d t 0 0 1 b a r :o n c r e a t e ( u l n tu m s g ,w p a r a mw p a m n l ,l p a r a m1 p a r 姗, b o o l b h a nd l e m f b u t t o n sw i t hi m a g e sa n dt e x t s e n d m e s s a g e ( m _ 1 1 w n d ,t b s e t e x t e n d e d s t y l e ,o , ( l i ) a r a m ) t b s t y l e e x m i x e d b u t t o n s ) ; s e t st h es i z eo f t h et b b u t t o ns t r u c t u r e s e n d m e s s a g e ( m _ h w n d ,t b - b u t t o n s t r u c t s i z e ,s i z e o f ( t b b u t t o n ) ,o ) ; s e tt h em a x i m u mn u m b e ro f t e x tm w sa n db i 恤1 印s i z e s e n d m e s s a g e ( m _ h w n d ,t b s e t m a x t e x t r o w s ,l ,0 l ) 3 0 a d do u rb u t t o n sc a p t i o nt ot h et o o | b a rw i n d o w t c h a r + p c a p t j o n = - t ( ”搜索”) ; i n ti l n d e x = :s e n d m e s s a g e ( m h w n d ,t b _ a d d s t r i n go ,( l p a r a m ) p c a p t i o n ) ; m h i m a g e = l m a g e l i s t _ c r e a i e ( 1 6 1 6 ,l l c - m a s 刚l c - c o l o r ,o ) ; 1 0 a do u r b u t t o n si c o na n dc r e a t et h ei m a g e1 i s tt oh o u s ei t h i c o nh s e a r c h v o d = l o a d i c o n ( m o d u l e g “r e s o u r c e i n s t a n c e ( ) m a k e i n t r e s o u r c e ( i d i i n d ) ) ; i n ti i m a g e l n d e x = i m a g e l i s t - a d d i c o n ( m - h l m a g e l i s t ,h s e a r c h v o d ) d e s t r o y i c o n ( h s e a r c h v o d ) ; ,初试化其他图标,用于树视图中显示节点的图标 h s e a m h v o d = l o a d i c o n ( m o d u l e g e t r e s o u r c e l n s t a n c e ( ) , m a k e i n t r e s o u r c e ( i d il i b ) ) ; i i m a g e i n d e x = i m a g e l i s l a d d i c o n ( m _ h i m a g e l i s t h s e a r c h v o d ) ; d e s t r o v j c o n f h s e a r c h v o d ) : h s e a r c h v o d = l o a d t c o n ( m o d u l e g e t r e s o u r c e i n s t a n c e ( ) , m a k e i n t r e s o u r c e ( 1 d is u b l i b ) ) ; i i m a g e i n d e x = l m a g e l i s l a d d i c o n ( m - h t m a g e l i s t ,h s e a r c h v o d ) ; d e s t r o v i c o 吖h s e a r c h v o d ) ; h s e a r c h v o d = l o a d i c o n fm o d u l e g e t r e s o u r c e i n s 诅n c e ( ) , m a k e i n t r e s o u r c e ( i d ip a g e ) ) ; i l m a g e i n d e x = i m a g e l i s t a d d i c o n ( m _ h i m a g e l 酞h s e a r c h v o d ) ; d e s t r o v i c o n m s e a r c h v o d ) : h s e a r c h v o d = l o a d i c o 州m o d u l e g e t r e s o u r c e i n s t a n c e ( ) , m a k e i n t r e s o u r c e f i d iv o d ) ) ; i i m a g e i n d e x = i m a g e l i s l a d d i c o n ( m h i m a g el l s h s e a r c h v o d ) ; d e s t m v i c o n f h s e a r c h v o d ) : s e tt h et 0 0 1 b a ,si m a g e i m a g e i n d e x = 0 ; :s e n d m e s s a g e ( m h w n d ,t b _ s e t i m a g e l i st ,o ,( l p a r a m ) r l h i m a g e l j s t ) a d dt h eb u n o nf o rt h et 0 0 l b a rt ot h ew i n d o w t b b u t t o nb u h o n : z e r o m e m o r y ( ( v o i d + ) b u n o n ,s i z e o f ( t b b u t t o n ) ) ; b u t i o n _ i d c o m m a l l d = i d ms e a r c h v o d : b u t t o n f s s t a t e = t b s t a t ee n a b l e d : b u 怕n f s s t y l e = b t n s _ b u t t o nb t n s a u t o s i z eb t n s - s h o w t e x t b u t t o n d w d a t a = o : b u t t o n i s t r i n g = i i n d e x : b u n o n i b i t m a d = 0 : :s e n d m e s s a g e ( m _ h w n d ,t b i n s e r t b u t t o n ,o ,( l p a r a m ) b u t t o n ) ; 3 l w n d r e c t t o p = e d j t h e i 曲t + 2 ; w n d r e c t b 酣o m = b o h o m : w n d r e c t 一g h t 十= ( b t n r e c t r i g h t - b 协r e c t 1 e r ) ; m r r e e w n d m o v e w i n d o w ( & w n d r e c t ,f a l s e ) ; r e t u m0 : 添加w e b 浏览器指针变量及设置函数 我们需要在i e 中浏览来源于网站的搜索数据及相关的影片说细信息,所以需 要在工具栏窗口中加入w e b 浏览器指针变量,以便需要的时候可以调用w e b 浏览 器的方法浏览i n t e r n e t 数据。 在v o d t o o l b a r _ h 文件中添加以下代码: v o i ds e t b r o w s e r ( 1 w e b b m w s e r 2 4p b r o w s e r ) ; o r i v a t e : c s e a r c h e d i tm _ 上d n w n d ; c v o d t r e em h e e w n d ; h i m a g e l l s t m h i m a g e l i s t ; i w e b b r o w s e r 2 + m p b r o w s e r ; 在v o d t 0 0 l b 孔c p p 文件的构造函数成员初始化表中添加以下加粗显示的代码, 初始化该变量: c v o d t 0 0 l b a r :c v o d t o o i b 缸) :m h i m a g e l i s t ( n u l l ) ,m _ p b r o w s e “n u l l ) 在v o d t o o l b a r c p p 文件的析构函数中添加以下代码,释放该对象: c v o d t 0 0 l b a r :c v o d t o o l b 叫) i m a g e l i s t d e s t r o y ( m h l m a g e l i s t ) ; s e t b m w s e r ( n u l l ) ; i f ( i s w i n d o w o ) d e s n ww j n d o w ( ) ; 在v o d t o o l ba r c p p 文件中添加以下代码,实现s e t b r o w s e r 函数: v o i dc v o d t b o l b a r :s e t b m w s e “1 w 曲b m w s e r 2 + p b r o w s e r ) i f ( m _ p b m w s e r ) m _ p b r o w s e r - r e l e a s e 0 ; m p b m w s e r 2 p b m w s e r ; i f ( m p b r o w s e r ) m p b r o w s e r _ a d d r e f ( ) ; ) 在s t d a f x h 文件中添加有关w e b 浏览器相关的头文件: e x t e mc c o m m o d u l e m o d u l e ; 荆n c l u d e 椭n c l u d e f 面的头文件在i d e s k b a n d 将用到 n p o s - s p a t h 。r e v e 勰e f i n d ( 叼; s p a t h = s p a l h l e f t ( n p o s ) ; c s t r 栅p s 舻s p a t h + ”l e s 舳e a r c h 俐; b s s t e 爿m p s l r ;,澍斌文件 ,调用w 曲溯览器溯览b s s l t e 所措的i n t 。r n e t w 曲页 m _ p b r o w s e 卜 n a v i g a t e ( b s s i t e ,& v e m p 填& v b m p 吼& v e m p 饥& v e m p i y ) ; 添加b s t r 相关头文件,在s t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聘用商务司机合同范本
- 绿化林地出租合同范本
- 老师计时劳动合同范本
- 耕种土地租借合同范本
- 职工宿舍免责协议合同
- 聘用销售经理合同范本
- 股权顾问合同协议范本
- 自制饮品订购合同范本
- 菜场档口分租合同范本
- 装修公司转让合同范本
- 市北资优六年级分册 第10章 10.6 探索用平面截正方体所得截面形状 郑斌
- 第二讲 土木工程的发展史及与人类生存的关系
- GB/T 25048-2010金属材料管环拉伸试验方法
- GB/T 21508-2008燃煤烟气脱硫设备性能测试方法
- GA 423-2015警用防弹盾牌
- 中国文化概论(第三版)全套课件
- 三级安全教育培训资料
- 《传感器原理及应用》全套教学课件
- 套普通话测试题及答案
- 高中英语外研版(2019)选择性必修第一册 Unit 5 Revealing nature-Starting out课件共11张PPT
- 产前筛查血清学指标及临床意义课件(PPT 31页)
评论
0/150
提交评论