嵌入式操作系统-Windows CE 2.ppt
《嵌入式操作系统-Windows CE 2.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统-Windows CE 2.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式操作系统Windows CE第七章 用户界面与图形子系统内容提要GWES概述设计Windows用户界面定制用户界面定制用户界面1 GWES概述GWESGraphicsWindowingEvent ManagerSubsystemWin32 应用编程接口(API),用户界面(UI),和图形设备接口(GDI)库的组合 是用户、应用程序和操作系统之间的接口GWES集成GDI,窗口管理器和事件管理器。GWES模块是Windows CE中最高度组件化的部分,包括两个子群USER处理消息、事件、用户输入GDI负责图形输出GWES组件模型最小配置用于创建最基本的Windows CE版本,包括操作系统内
2、核(Core.d11)和选定的GWES支持组件,如消息处理用户输入电源管理而不显示UI,也不包括窗口管理功能中等配置包括操作系统核心并支持以下GWES功能消息处理及用户输入电源管理提示性发光二极管(LED)GDI,包括Microsoft TrueType字体和光栅字体,文本绘制,调色板和打印可定制的触摸和校准UI网络UI对话波形API管理器输入方法管理器(IMM)窗口和对话管理可定制UI完全配置包含所有的GWES组件Windows CE图形子系统的结构消息框对话框管理器OOMSplash类窗口管理器事件管理器编辑框列表框组合框按钮菜单 控件1.1 USER系统系统三个核心组件消息队列事件管理器
3、用户输入系统USER部分的主要结构部分的主要结构应用程序应用程序驱动程序键盘驱动程序触摸设备驱动程序显示驱动程序用户输入系统前台窗口活动窗口焦点窗口光 标剪贴板Wmbase窗口管理器WinmgrGDI消息循环系统SendMessage()PostMessage()GWEMsgque消息处理消息消息标识符(识别消息的命名常数)创建一个窗口时发送WM_CREATE删除一个窗口时发送WM_DESTROY窗口客户区改变需要重绘时发送WM_PAINT可选参数意义和取值取决于消息标识符可为整数、组合位标志、结构指针或其它信息消息队列的功能接收消息并将消息发送到相应的窗口保存输入状态信息,比如光标的大小、提
4、示符闪烁率等消息传送的两个基本函数SendMessage()同步消息传送机制消息队列和线程一一对应PostMessage()异步消息传送机制每个窗口都和一个与特定线程相关的消息队列联系在一起窗口是消息传送的目的地其它消息处理函数GetMessage从消息队列中得到消息DispatchMessage将GetMessage找回的消息分发给一个窗口程序 TranslateMessage将一个键盘消息转换为字符消息TranslateAccelerator处理菜单命令对应的加速键IsDialogMessage确定一个消息是否为一个对话框所需要,如果是则处理这个消息PeekMessage检索一个消息,并存
5、放这个检索信息到结构RegisgerWindowsMessage定义一个新的窗口消息,它保证将在整个系统中均可使用SendMessage的同线程消息处理流程WndProc().接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列.SendMessage(hWnd);SendMessage的异线程消息处理流程WndProc().接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列.SendMessage(hWnd);接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列GetMsg(&msg)PostMessage的消息处理流程接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列W
6、ndProc().GetMessage(&msg)DispatchMessage(&msg).PostMessage(hWnd);.输入管理输入管理由一套子系统完成,负责处理以下几个相互关联的窗口活动窗口每个线程有一个特定的窗口称为活动窗口焦点窗口活动窗口和其子窗口可以是焦点窗口焦点窗口能够接收来自键盘的消息前台窗口系统中一个特定的线程或者消息队列称为前台线程,前台线程中的活动窗口是前台窗口SetActiveWindow()SetFocus()SetForegroundWindow()焦点窗口活动窗口三个窗口的关系图发送消息队列.接收输入事件的合适窗口输入消息队列键盘输入消息触摸设备输入消息窗
7、口管理器PostMessage()PostMessage()触摸设备驱动程序键盘驱动程序GWE输入线程触摸输入事件和键盘输入事件的处理Windows CE支持的用户输入的类型键盘鼠标触摸屏和输入笔输入面板手写体识别键盘输入模型键盘扫描码键盘设备驱动程序消息系统消息队列消息线程消息队列消息线程消息循环消息窗口过程系统消息队列虚键码转换消息字符处理键盘消息窗口以击键消息和字符消息的形式接收键盘输入非系统击键WM_KEYDOWNWM_KEYUP系统击键WM_SYSKEYDOWNWM_SYSKEYIPWM_KEYDOWN消息收到此消息时,应该检查消息中包含的虚键码,以确定如何处理击键,虚键码包含在消息
8、的wParam参数中。另外通常程序只处理非字符键产生的击键。典型代码框架:case WM_KEYDOWN:switch(wParam)Case VK_HOME:Break;Case VK_END:Break;Default:Break;字符消息用户输入字符时,Windows CE并不自动产生字符消息,而是产生击键消息。应用程序消息循环应调用TranslateMessage函数将击键消息转换为相应的字符消息Windows CE的四条字符消息WM_CHARWM_SYSCHARWM_DEADCHARWM_SYSDEADCHAR接收来自输入笔的输入通过输入笔在触摸屏上的点击可完成类似鼠标的操作。Win
9、dows CE支持的输入笔的消息WM_LBUTTONDBLCLK 用户双击屏幕WM_LBUTTONDOWN 用户单击屏幕WM_LBUTTONUP 用户从屏幕上抬起输入笔WM_MOUSEMOVE 用户在笔尖接触屏幕时移动输入笔接收来自输入面板的输入没有键盘输入的Windows CE设备需要模拟键盘输入的输入方法(IM),Windows CE实现了一个通过触摸屏操作的输入面板结构 Windows CE lM需要两个部分:软件输入面板子系统IM输入面板子系统完成非键盘输入到键盘事件的转换,也负责管理软件输入方法输入面板通信示意图输入面板调用IInputMethod借口创建IM,然后就可以接收用户输入
10、IM通过IIMCallback接口将数据传输给输入面板应用程序键盘驱动分发系统GWES键盘事件输入面板IIMCallbackIMIInPutMethod手写识别Windows CE.NET手写体识别引擎目前能够识别ASCII字符集的所有94个字符各种图形字符,如中文、日文、韩文,并产生相应的Unicode输出HWXGUIDE结构定义用于字符输入的识别框的大小和位置基线(cyBase)和中线(cyMid)主要用于识别字符,对于识别图形字符不需要 使用多个识别框时,偏移参数在各个识别框之间形成了一定的缓冲区,以防止一个识别框内的字符覆盖另一个识别框的字符 手写体识别过程1.调用HwxConfig函
11、数:为应用程序初始化识别引擎2.调用HwxCreate函数:创建HRC(手写识别上下文)对象3.调用HwxSetGuide函数:定义处理用户输入的识别框4.调用HwxALCValid和HwxALCPriority函数:定义识别准则5.调用HwxSetContext函数:向HRC对象传递早先识别的字符6.当用户书写时,调用HwxInput函数:向HRC对象传送手写数据7.调用HwxProcess函数:向识别引擎传递HRC对象注:如果使用不完全识别(用于识别汉语等复杂的多笔划语言字符),则对于每个输入笔划重复步骤78.调用HwxResultsAvailable函数:获得已经识别的字符数9.调用Hw
12、xGetResults函数:获得识别引擎结果10.调用HwxDestroy函数:删除当前的HRC对象,表示识别过程的完成用于控制文本和图形的显示使用GDI 画直线,曲线,闭合图形、文本、位图等 GDI使用设备上描述表(DC)存储特定设备的绘图的属性,包括画笔、画刷、字体、位图、调色板等Windows CE 支持打印机设备描述表、显示设备描述表和内存设备描述表1.2 GDI(Graphics Device Interface)Windows CE支持的GDI功能光栅字体和TrueType字体定制彩色调色板以及调色和非调色的彩色显示设备块传输功能和光栅操作码笔和刷子打印光标形状绘制功能Window
13、s CE不支持的GDI功能坐标空间转换函数,坐标设备与设备空间等价时区变换API彩色光标class GDIOBJpublic:static HTABLE*m_pHTable;/句柄表句柄表INT16 m_nCount;/引用计数引用计数UINT16 m_nIndex;/句柄表索引句柄表索引GDIOBJ();GDIOBJ();ULONG Increment();ULONG Decrement();void RemoveFromHandleTable();BOOL IsStockObject();virtual BOOL DeleteObject();virtual int GetObject(i
14、nt CntBytesBuffer,void*pObject)=0;virtual DWORD GetObjectType()=0;virtual GDIOBJ*SelectObject(DC*)=0;基本基本GDI对象的基类对象的基类GDIOBJGDI的图形原语矩形折线多边形椭圆圆角矩形原语是由驱动程序画线和填充小区域实现的画线的工具:画笔填充区域的工具:刷子画笔普通画笔BLACK_PENWHITE_PENNULL_PEN用GetStockObject函数选择特殊画笔的定义项目线宽颜色画笔类型画笔类型画笔类型PS_SOLIDPS_DASHPS_NULL画实线画点划线不画线刷子刷子是用于描绘闭
15、合形状内部区域的图形对象Windows CE支持三种类型的逻辑刷标准刷:Windows CE维护了21种标准刷实心刷:在8X8像素的正方形中包含64个同色像素模板刷:使用CreatePatternBrush 或CreateDIBPatternBrushPt来创建SelectObject函数将逻辑刷选入设备环境GetStockObject函数可以选择一种标准刷CreateDIBPatternBrushPt用来设计任何尺寸、颜色和模式的画刷原语转换成画笔和画刷以画矩形为例:调用设备驱动程序时,对于矩形区域内部使用一个画刷工具,而对于矩形外边缘,使用4个小区域。首先使用选入设备描述表中的画刷填充矩形
16、区域内部,然后使用选入设备描述表中的画笔描绘矩形外边缘。Windows CE中支持的画笔由于考虑内存空间的局限性,Windows CE不支持在桌面Windows中支持的一些特殊画笔,如末端为方角形或斜角形,以及一些图形基本元素,如粗画笔、粗线椭圆等调色板调色板是输出设备能够显示的颜色的集合Windows CE没有标准彩色调色板,每次创建设备环境时,Windows CE将创建一个默认调色板不能改变默认调色板中的颜色,但是可以创建自己的逻辑调色板,并将它选入设备环境取代默认调色板创建逻辑调色板赋值LOGPALETTE结构的各成员,并将结构指针传递给CreatePalette函数调用SelectPa
17、lette函数将调色板选入当前设备环境调用RealizePalette函数使系统调色板与当前设备环境的调色板相同 位图位图是一个位数组,将其映射到输出设备上的矩形像素数组是就可以创建图像位图是可以用来在设备环境中创建、绘制、操作和检索图像的图形对象可以将位图想象为一种由象素阵列组成的图画,这些象素可以在屏幕上显示出来分类:设备相关位图(DDB)设备无关位图(DIB)Windows CE支持独有的4色位图格式DDB是依赖于特定DC特征的位图,并且不能很容易地移植到具有不同特征的DC没有自己的颜色表,只有在与创建位图的设备具有相同的显存结构的设备上才能正确显示Windows CE支持1、2、4、8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式操作系统-Windows CE 嵌入式 操作系统 Windows
限制150内