基于嵌入式实时操作系统VxWorks的WindML图形界面开发方法
基于VxWorks的图形软件WindML3.0的研究

运行 才更 稳 定 , 效 率 更 高 。据 功 能将 贪 吃蛇 游 戏
划 分成 九个 小模块 , 每 个模 块均 具有 自己 的功能 , 而且, 比较容 易 画 出各 个模 块 的流程 图 , 如图 1 所
示 。
体库) , 它 是 Vx Wo r k s操 作 系 统 中 库 的 一 部 分 。 它 为 Vx Wo r k s的开发 者 在 本地 设 备 上 实 现 图 形
化用 户界 面 ( GUI ) 提 供 了基 础 支 持 , 支 持 基 于 嵌 入式操 作 系统 的 多媒 体 应 用 程 序 , 提 供 基 本 的 图 形、 视频 、 声频技术 , 并 且 提供 了一 个设 计 标 准 设 备 驱 动程 序 的框架 , Wi n d ML还 提 供 了一 系 列 工
图形 驱动 即完 成 初 始 化 图形 系 统 功 能 ; 开始 画 面模块 的主要作 用是 根 据设 置绘 制 出玩 游戏 区
域 四周 的墙壁 ; 玩游 戏 的过 程 是 游 戏 此 游 戏 程 序 的核 心 , 又可 细 分 为好 多小 的功 能模 块 ; 其中, 显
收 稿 日期 : 2 0 1 3 —1 1 l 2 机 电一 体 化技 术 方 面 的 教学 与研 究 。
性上 的表 现 十分优 秀 , 因而 被广泛 的应用 于通讯 、
Wo r k s 操 作 系 统 和 Wi n d MI 的应 用 , 既 容 易 入 门, 又能 帮 助掌 握 Wi n d ML软 件 , 更 能 激 发 学 习
兴趣。
航空 航天 、 军 事测 控 、 数 字信 号处 理等 高尖 技术 领
域 中 。在 美 国 的 F一1 6 、 F A一1 8战斗 机 、 B一2隐
VxWorks系统下基于WindML的窗口化图形界面设计

作者 简 介 : 昊 秀 才( 1 9 8 0 一) , 女, 河北衡水人 , 河 南理 工 大 学 万 方科 技 学 院公 共 基 础 课 教 学部 讲 师 , 研究方向为应用数学 ; 李瑞斋( 1 9 8 0
一
) , 女, 河 南 南 乐人 , 硕士 , 郑 州 大 学 西 亚 斯 国 际 学 院数 理 学 院讲 师 , 研 究方 向为 概 率 统 计 ; 周健 ( 1 9 6 4 一) , 男, 硕 士, 河 南 郑
第1 4 卷 第2 期
2 0 1 5 年 2 l f
软 件 导 刊
Sof t wa r e Gui de
V O1 .1 4NO. 2
Fe b. 2Ol 5
Vx Wo r k s系 统 下 基 于 W i n d M L的 窗 口化 图 形 界 面 设 计
3 窗 口化 图 形 界 面 程序 设计 原 理
3 . 1 基 本 概 念
Wi n d ML图 形 设 计 中 的 一 些 基 本 概 念 类 似 于 常 见 的 Wi n d o ws系 统 下 的 Vi s u a l C+ + 编 程 , 如 窗 口实例 、 窗 口
和实 时 性 被 广 泛 应 用 于 通 信 、 军事、 航空 、 航 天 等 高 技 术
写 消 息 处 理 器 。消息 处 理 器 类 似 消 息 回调 函数 , 用 来 响 应
L i b r a r y ) 支持在嵌入式系统上 运行 多媒体应用 程序 , 提 供 基 本 的 图形 、 视频 、 音 频 技 术 及标 准设 备 驱 动 程 序 框 架 , 其 AP I 库 提供 了 图 形 硬 件 接 口 和 处 理 输 入 输 出设 备 事 件 的
基于WindML媒体库的图形界面开发

基于WindML媒体库的图形界面开发秦啸;宋慧娟;穆朝义【摘要】本文介绍了嵌入式实时操作系统VxWorks及其媒体库WindML的特点和结构。
描述了利用WindML进行图形界面开发的思路和相关步骤,并且给出了多设备类型下,WindML的命令行配置方法及代码实现。
【期刊名称】《电子技术与软件工程》【年(卷),期】2013(000)017【总页数】2页(P100-101)【关键词】windML;图形开发【作者】秦啸;宋慧娟;穆朝义【作者单位】西安应用光学研究所,陕西省西安市710065;;;【正文语种】中文【中图分类】TP3161 引言随着计算机技术和大规模集成电路的发展,微型化、专业化成为计算计发展的趋势,其应用范围也越来越广。
而嵌入式系统以其小巧,自动化程度高、实时响应等优势迅速发展并得到广泛的应用。
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时嵌入式操作系统(RTOS),是嵌入式开发的核心组成部分。
它凭借高可靠性和优异的实时性被广泛应用在卫星通讯、飞行制导、航空导航等对系统实时性要求苛刻的领域。
而WindML是VxWorks系统中用于多媒体运行,包括图形显示、音频、视频等处理的组件,并提供其软件开发框架。
2 实时操作系统VxWorks概述VxWorks是目前嵌入式环境中最具代表性的操作系统。
它与目前各领域中使用的CPU都能很好的兼容。
包括:PowerPC、X86、MIPS、SC-400、386EX、ARM 等。
对各类硬件环境良好的兼容性使得Vxworks成为嵌入式系统开发中的主流。
VxWorks允许一个实时应用作为一系列独立任务来运行,各任务有独立的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的通信机制,如信号量、消息队列、管道、网络透明的套接字等。
此外,VxWorks提供400多个相对独立的、短小精炼的目标模块,用户可根据需要选择适当模块来裁剪和配置系统,有效地保证了系统的安全性和可靠性。
在WindML下汉字、图形界面及图片显示的开发研究

在WindML下汉字、图形界面及图片显示的开发研究胥小武;余立建;刘洪雨【摘要】本文介绍WindML的结构,重点叙述在开发文字图形前字库的原理、结构和配置、显示图片文件前的准备工作及WindML设置编译的重要注意事项,最后用具体的项目开发成果,展示了在VxWorks下用WindML开发的文字、图形、图片文件的显示.【期刊名称】《铁路计算机应用》【年(卷),期】2014(023)008【总页数】4页(P49-52)【关键词】VxWorks;WindML;文字;图形;图片文件【作者】胥小武;余立建;刘洪雨【作者单位】西南交通大学信息科学与技术学院,成都610031;西南交通大学信息科学与技术学院,成都610031;西南交通大学信息科学与技术学院,成都610031【正文语种】中文【中图分类】U29;TP39VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统,这就有效保证了系统的安全性和可靠性[1]。
VxWorks包含了BSP,Wind内核,I/O系统,文件系统,网络系统,图形系统等[2]。
WindML是VxWorks下的一部分,它支持多媒体程序运行于嵌入式操作系统,主要用于提供基本的图形、视频和声频技术应用开发。
WindML API提供了一个统一的图形硬件接口及处理输入/输出设备事件的能力。
WindML包括两个组件:(1)SDK。
它提供了图形资源的初始化和清理例程,多媒体API包括了2D图形化界面、区域管理、窗口、颜色管理、视频音频、JPEG 支持、事件服务、内存管理、扩展API和设备管理;(2)DDK。
它提供了一个完整的常见硬件配置,参考驱动程序例程和API文档可以快速建立起新的驱动程序[3]。
WindML的层次结构如图1所示。
?在WindML第一次使用之前要配置、编译WindML。
VxWorks中的板级支持包BSP (board support package)是介于底层硬件和上层软件之间的底层软件开发包,它主要用来屏蔽底层硬件,进行硬件系统的初始化并调用外设的驱动程序接口管理系统外设。
基于OpenGL的VxWorks图形界面开发毕业论文

基于OpenGL的VxWorks图形界面开发毕业论文目录第一章绪论 (1)1.1 背景知识介绍 (1)1.1.1 嵌入式实时系统 (1)1.1.2 图形用户界面概述 (2)1.2 国内外研究现状 (4)1.2.1 嵌入式GUI的现状 (4)1.2.2 基于VxWorks的图形解决方案 (5)1.2.3 嵌入式GUI的发展趋势 (7)1.3 课题来源和意义 (7)1.4 论文结构 (8)第二章VxWorks操作系统及媒体库WindML (11)2.1 VxWorks深入研究 (11)2.1.1 VxWorks概述[10] (11)2.1.2 VxWorks实时微内核[11][12] (12)2.2 VxWorks集成开发环境Tornado (15)2.2.1 Tornado介绍[13][14] (15)2.2.2 交叉编译环境 (15)2.2.3 Tornado的组成 (16)2.3 WindML媒体库 (18)2.3.1 WindML概述[16] (18)2.3.2 WindML事件服务机制 (19)2.3.3 WindML2D图形库分析 (19)2.3.4 WindML程序开发流程 (21)2.4 本章小结 (22)第三章OpenGL/Mesa及其在VxWorks下的移植 (23)3.1 OpenGL/Mesa (23)3.1.1 OpenGL开发库 (23)3.1.2 OpenGL开发库结构 (24)3.1.3 Mesa库 (28)III 基于OpenGL的VxWorks图形用户界面开发3.2 OpenGL/Mesa库的移植 (29)3.2.1 工作概述 (29)3.2.2 重要数据结构和函数的引入 (29)3.2.3 使用改进后的库 (31)3.2.4 编译Mesa库 (32)3.3 搭建虚拟开发环境 (33)3.4 本章小结 (35)第四章VxWorks系统GUI关键技术及实现 (37)4.1 消息驱动机制 (37)4.1.1 消息驱动机制实现原理 (37)4.1.2 消息检测任务 (38)4.1.3 事件分发任务 (38)4.2 中文显示方案 (39)4.2.1 中文显示的基本原理 (39)4.2.2 字库文件格式 (40)4.2.3 具体的实现方案 (42)4.3 窗体管理 (44)4.3.1 主窗口 (44)4.3.2 对话框 (45)4.3.3 控件 (46)4.3.4 菜单 (46)4.4 常用控件设计 (47)4.5 本章小结 (50)第五章工程应用和效果测试 (51)5.1 工程应用 (51)5.2 测试效果 (51)5.2.1 普通图形界面 (51)5.2.2 3D图形显示 (52)5.3 本章小结 (53)结束语 (55)致谢 (57)参考文献......................................................................................... 错误!未定义书签。
基于PowerPC嵌入式平台的WindML图形驱动设计

Wa n g L u , G u a n Qi n
( De p a r t me n t o fS p e c i a l E l e c t r o n i c T e c h n o l o g y , No . 5 8 Re s e a r c h I n s t i t u t e o f C h i n a O r d n a n c e I n d u s t r i e s , Mi a n y a n g 6 2 1 0 0 0 , C h i n a )
王璐 ,官 琴
( 中 国兵器 工业 第 五八 研 究所特 种 电子 技 术部 , 四川 绵 阳 6 2 1 0 0 0 ) 摘要: vx wo r k s 操作 系统 中 的图形 开发 组件 Wi n d ML只提 供 C HI P S芯 片的通 用驱 动 支持 , 没有 针 对 C H I P S 6 5 5 4 5 显示 芯 片 的具体 驱动 程序 。因此提 出一种 基 于 P o we r P C嵌入 式 平 台使用 C HI P S 6 5 5 4 5显 示芯 片的 Wi n d ML图形驱 动 设 计 方 法。 介 绍基 于 P o we r P C嵌 入 式 平 台 , 利 用 Vx Wo r k s 操 作 系 统 下 的 图形 开 发 组 件 W i n d ML 开 发 基 于 CH I P S 6 5 5 4 5 显 示 芯 片的显 卡驱 动 ,并给 出 了详 细 的开发 步骤 。 实验 结 果表 明:该程序 工作 正常 ,分辨 率 可达 1 0 2 4 x 7 6 8 ,刷 新 率 6 0Hz ,最 高支持 8 b p p颜 色深度 ,在 实际工作 中运 用情 况 良好 。
基于OpenGL的VxWorks图形界面开发

摘要
图形用户界面(GUI)是人机交互技术的重要内容,它使用图形图像信息、 直观的表达方式与用户交互,使软件系统的人机界面简洁、美观、方便好用,更 加人性化。目前 GUI 已经大量应用在嵌入式领域,但是大多数嵌入式 GUI 系统 提供给用户的显示平面从逻辑设计上讲是二维的,最大的缺点在于反映信息量小, 在对真实场景进行模拟显示的时候,无法提供真实的场景数据。随着嵌入式系统 硬件功能的不断提高,如何开发一款支持 3D 建模的嵌入式 GUI 已成为一个迫切 的话题。
关键词:嵌入式统 VxWorks 图形用户界面 OpenGL/Mesa WindML
目录
I
目录
第一章 绪论...................................................................................................................1 1.1 背景知识介绍...................................................................................................1 1.1.1 嵌入式实时系统.....................................................................................1 1.1.2 图形用户界面概述.................................................................................2 1.2 国内外研究现状...............................................................................................4 1.2.1 嵌入式 GUI 的现状................................................................................4 1.2.2 基于 VxWorks 的图形解决方案 ...........................................................5 1.2.3 嵌入式 GUI 的发展趋势........................................................................7 1.3 课题来源和意义...............................................................................................7 1.4 论文结构...........................................................................................................8
嵌入式实时操作系统VxWorks中的图形界面设计

嵌入式实时操作系统VxWorks中的图形界面设计
梁勇;孟桥;刘铁英
【期刊名称】《电测与仪表》
【年(卷),期】2005(042)009
【摘要】对用WindML2.0实现嵌入式实时操作系统VxWorks下的图形界面设计作了一个比较全面的阐述,包括它的组成、功能和使用.改进了WindML2.0的位图操作并实现了中文显示功能.
【总页数】4页(P56-58,34)
【作者】梁勇;孟桥;刘铁英
【作者单位】南京财经大学,南京,210003;东南大学,南京,210096;东南大学,南京,210096;吉林省发改委机械设备成套招标公司,长春,130051
【正文语种】中文
【中图分类】TP317.4
【相关文献】
1.实时操作系统VxWorks中图形开发环境的配置 [J], 肖骏;刘承香;崔鹏辉
2.嵌入式实时操作系统VxWorks及其在地震勘探仪器中的应用 [J], 李艳军;罗兰兵;李兴华
3.VxWorks嵌入式图形界面设计 [J], 皇甫祯;陈怀民;段晓军;吴成富
4.VxWorks下Tilcon嵌入式图形用户界面设计与实现 [J], 姜飞;王屹华;崔晓宇;李凌锋
5.嵌入式实时操作系统DeltaOS中的图形用户界面设计 [J], 胡修林;李凡
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 定义事件路由 ID
UGL_APP_ID appId;
// 定义应用程序 ID
UGL_WINDOW_ID windowId;
// 定义窗口 ID
uglInitialize( );
// 初始化
uglDriverFind (UGL_DISPLAY_TYPE, 0, (UGL_UINT32 *)&devId); //获得显示设备 ID
中的窗口的最小化和关闭功能。
3.8 一个实例
下面通过一个程序实例来简单说明一下利用 WindML 进行图形界面开发的过程。下面给出部分程序代
码并加以说明。
……
UGL_GC_ID gc;
//定义图形上下文
UGL_DEVICE_ID devId;
//定义显示设备 ID
UGL_FONT_DRIVER_ID fontDrvId;
关键词:嵌入式实时操作系统;VxWorks;图形界面;WindML
1 VxWorks 及 WindML 简介 [1,2]
VxWorks 操作系统是美国 WRS(Wind River Systems Inc.)公司于 1983 年设计开发的一种嵌入式实时 操作系统(Embedded RTOS),VxWorks 自 80 年代初开始涉足商业化嵌入式实时操作系统以来,依据其良好 的持续发展能力、高性能的内核及友好的用户开发环境,同时支持多种微处理器,是目前嵌入式系统领域 中使用广泛,市场占有率较高的系统之一。它被广泛地应用在通信、军事、航空、航天等高精尖技术及实 时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
WindML 即 Wind Media Library(媒体库),它是 VxWorks 库的一部分,它支持多媒体程序运行于嵌入 式操作系统,WRS 公司设计它主要是用来提供基本的图形、视频和声频技术以及为用户提供一个开发标准 用户设备驱动程序的框架。并且,WindML 提供了一系列工具用来处理输入设备和过程事件。以上这些功 能绝大部分都由 WindML 提供的 API 来完成。
利用 WindML 进行图形界面开发,首先要对 WindML 进行相应的配置和编译,然后将 WindML 加载到 VxWorks 内核。当 WindML 配置和添加完成后,就可以在 VxWorks 的开发环境 Tornado 中进行编程,从而实 现图形界面的开发。利用 WindML 可以实现二维图形的绘制,文本的显示,鼠标和键盘等输入设备的响应, 区域和窗口的绘制等等功能。
3.7 扩展功能的实现 WindML 本身不支持中文显示,因此要想实现中文显示,可以利用 WindML 对双字节编码的支持,实现 对汉字的点阵存储、点阵获取、点阵显示的全过程,并利用 WindML 的双字节显示函数实现汉字码到汉字
的显示 [4] 。这种方法需要自己编写汉字字库,然后将汉字字库添加进 WindML 的内核,显示中文的编程方
法和文本显示是一样的,只要将汉字当作双字节显示即可,不过这种方法具有局限性,就是能显示的中文
必须是汉字字库里的,这样能显示的汉字受到所添加的汉字字库的限制。
WindML 组件中提供的窗口 API 不能实现 Windows 系统中的窗口功能, 但是我们可以利用 WindML 现有
的功能仿真实现,现在简要阐述一下实现过程。首先,我们利用 WindML 的窗口 API 画出窗口外观,然后
3.1 配置和编译 WindML 在第一次使用 WindML 前,必须要配置 WindML,WindML 配置有两种方法:一是通过 Tornado 下的 WindML 配置工具配置 WindML,二是通过命令行方式配置 WindML。一般都是使用配置工具来完成 WindML 的配置,
如果使用配置工具不能满足配置要求,也可以通过命令行方式配置 WindML。在通过配置工具配置 WindML 时,配置选项包括处理器的选择,图形设备配置,输出设备配置,字体配置,音频配置和杂项配置。用户 可以根据自己的要求,选择合适的配置。选好配置后,直接按配置工具上的编译按钮即可进行编译。
在窗口的最上方用不同颜色画一个与窗口同宽的矩形来模拟窗口的标题栏,在标题栏的左上角可以写字,
在右上角可以画出最小化图标和关闭图标,当鼠标点击最小化图标区域,就将当前窗口关闭,在屏幕的左
下角重新画出一个小矩形窗口来作为最小化后的窗口,当鼠标再次点击最小化后的窗口时,再在原来的窗
口位置重新画一下窗口;当鼠标点击关闭图标区域时,将当前窗口关闭即可。这样就模拟了 Windows 系统
基于嵌入式实时操作系统 VxWorks 的 WindML 图形
界面开发方法
蔡华,卞新高, 史中权,丁坤
(河海大学 机电工程学院,江苏 常州 213022)
摘要: 本文简要介绍了嵌入式实时操作系统 VxWorks 的媒体库 WindML,讨论了 WindML 图形界面开发方法,通过实例详细 阐述了 WindML 的配置和加载、二维图形的绘制、文本显示、鼠标和键盘等输入设备的响应以及区域和窗口的绘制等功能的 实现方法。
gc = uglGcCreate(devId);
// 创建图形上下文
……
uglDriverFind (UGL_FONT_ENGINE_TYPE, 0, (UGL_UINT32 *)&fontDrvId);
uglFontDriverInfo(fontDrvId, UGL_FONT_TEXT_ORIGIN, &textOrigin);
// 获得字体驱动
uglFontFindString(fontDrvId, "familyName=Song; pixelSize = 16", &fontDef);
if ((fontText= uglFontCreate(fontDrvId, &systemFontDef)) == UGL_NULL)
// 定义字体驱动 ID
UGL_FONT_ID fontText;
// 定义字体 ID
UGL_FONT_DEF fontDef;
UGL_EVENT_SERVICE_ID eventServiceId;
// 定义事件服务 ID
UGL_EVENT event;
// 定义事件
UGL_EVENT_ROUTER_ID eventRouterId;
2 WindML 的结构 [3]
WindML 包 括 两 个 组 件 : 软 件 开 发 包 (Software Development Kit,SDK)和驱动 程序开发包(Driver Development Kit , DDK)。SDK 组件用于为各种平台开发与硬件无 关的应用。它在图形、输出处理、多媒体、字 体和内存管理方面提供了完整的 API。DDK 用 于开发驱动程序。它提供了一整套可用于通用 硬件配置、软件框架的参考驱动程序,以及支 持开发人员从提供的“通用”代码快速创建 新驱动程序的 API。WindML 的层次结构见图 1。
{
printf("Font not found. Exiting.\n");
return;
}
// 查找及生成匹配字体
uglFontSet(gc, fontText);
// 设置字符样式
应用程序
图形、音频、视频、及事 件服务程序
VxWorks
输出驱动程序
输入驱动程序 ...
输出设备 (如:显示器)
输入设Байду номын сангаас (如:鼠标)
...
图 1 WindML 的层次结构 Fig.1 WindML layered structure
SDK 硬件 无关层
DDK 硬件 相关层
硬件
3 WindML 的图形界面开发方法
3.2 加载 WindML 配置和编译好 WindML 后,可以使用 Tornado 工程管理工具把 WindML 加载到 VxWorks 映像里,加载时, 可以根据自己的需要进行相应的选择。一般对于图形界面的开发,我们只要将 2D graphics 和 complete 2D library 添加进 VxWorks 即可。 3.3 图形初始化 WindML 配置和加载完成后,就可以用 WindML 进行编程。编程时,必须首先调用函数 uglInitialize() 完成初始化。接着要进行颜色的配置,WindML 的图形界面是以像素为单位的,一般采用配色表来选择颜色, 先在配色表上配置好每一种颜色的 R、G、B 值,并用其在配色表中的索引值来代表这种颜色。当配置好颜 色后,还要创建图形上下文(GC),图形上下文包含了绘图的特征信息,大部分的绘图操作只有通过指定 图形上下文,定义了绘图特征才能进行。WindML 使用函数 uglGcCreate()来创建图形上下文,创建 GC 后 就可以进行画图的基本设置,如图形的前景色和背景色,线的类型和线宽,图形的填充模式,默认的位图, 光栅覆盖模式,当前使用的字体等等。 3.4 二维图形的绘制及文本的显示 当完成初始化后,就可以调用 WindML API 函数来完成二维图形的绘制。WindML 具有画直线、矩形、 椭圆、点、多边形等简单图形的功能,也就是提供了画这些二维图形的函数,例如绘制直线的函数 uglLine(), 绘制矩形的函数 uglRectangle()等等。WindML 可以使用多线程或多任务,但资源是一定的,为防止多线 程之间产生资源冲突,需要使用互斥信号量锁定资源。WindML 中,一般在使用一组画图函数前,用 uglBatchStart(gc)通过互斥信号量锁定图形上下文、图形设备及缓冲,并且隐藏光标。在画图操作完成 后,再用 uglBatchEnd(gc)释放被锁定的资源以被其他的画图函数所使用。 WindML 文本渲染和字体管理 API 提供了方便的文字显示方法。在文本显示之前由函数 uglInitialize() 完成字体驱动和字体引擎的初始化。然后使用函数 uglDriverFind()获得字体驱动的 ID,再由函数 uglFontDriverInfo()设置字体驱动程序。由于许多嵌入式系统只提供少数的有限字体选择,因此一般还 需要应用函数 uglFontFindString()找到系统提供的与所要显示字体属性最相匹配的字体。当一个字体找 到后,由函数 uglFontCreate()生成该字体。当要使用一个已经创建了的字体时,必须首先使用函数 uglFontSet()将该字体的 ID 选入图形上下文(GC),然后就可以使用显示函数 uglTextDraw()(uglTextDrawW 用于双字节)用当前图形上下文中的字体在显示器上显示文本。 3.5 鼠标和键盘的响应 一般情况下,图形界面需要通过鼠标和键盘等输入设备实现一定的人机交互。WindML 的事件服务程 序是用来处理输入设备的输入请求的。它会把键盘、鼠标等输入设备输入的数据转化为事件并且传送给事 件句柄,送到应用队列中。要实现键盘和鼠标的响应,必须要产生事件消息队列,然后对输入事件进行判 别,当是键盘事件时,根据键盘的输入,响应键盘;当是鼠标事件时,根据鼠标的动作,响应鼠标。另外, 鼠标的光标可以在鼠标初始化时定义,可以实现各种形状、各种大小以及各种颜色的鼠标光标外形。 3.6 区域和窗口的绘制 WindML 的区域管理 API 可以在界面上定义一个区域,这个区域是由一组矩形区围绕而成,可以在这个 区域里画二维图形。如果是更为复杂的应用程序,或者要在多任务或多线程之间共享显示,则要用到窗口 API。窗口 API 可以创建、显示和操作多个窗口,并且可以处理这些窗口中的事件。窗口可以移动,改变 大小,重叠,或者放在其他窗口内部。这样,多个任务就可以在一个屏幕上的不同窗口内同时显示图形了。 绘制区域一般是先通过函数 uglRegionCreate()来创建区域,然后就可以在创建的区域里画二维图形,同 时可以通过函数 uglRegionRectInclude()包含一个矩形到区域里和 uglRegionRectExclude()从区域里去 除一个矩形。还可以通过区域的相关函数进行区域的移动,复制,清除等等操作。而绘制窗口则要创建事 件路由,并要创建窗口应用上下文。窗口除了具有区域的功能外,还可以响应外界的鼠标、键盘等输入设 备的事件。具体的程序实现方法可以参见下面的实例。