




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式操作系统——WindowsCE第七章用户界面与图形子系统内容提要GWES概述设计Windows用户界面定制用户界面1GWES概述GWESGraphicsWindowingEventManagerSubsystemWin32应用编程接口(API),用户界面(UI),和图形设备接口(GDI)库的组合是用户、应用程序和操作系统之间的接口GWES集成GDI,窗口管理器和事件管理器。
GWES模块是WindowsCE中最高度组件化的部分,包括两个子群USER——处理消息、事件、用户输入GDI——负责图形输出WindowsCE图形子系统的结构消息框对话框管理器OOMSplash类窗口管理器事件管理器编辑框列表框组合框按钮菜单……
控件1.1USER系统三个核心组件消息队列事件管理器用户输入系统USER部分的主要结构应用程序应用程序驱动程序键盘驱动程序触摸设备驱动程序显示驱动程序用户输入系统前台窗口活动窗口焦点窗口光标剪贴板Wmbase窗口管理器WinmgrGDI消息循环系统SendMessage()PostMessage()GWEMsgque消息队列的功能接收消息并将消息发送到相应的窗口保存输入状态信息,比如光标的大小、提示符闪烁率等消息传送的两个基本函数SendMessage()同步消息传送机制消息队列和线程一一对应PostMessage()异步消息传送机制每个窗口都和一个与特定线程相关的消息队列联系在一起窗口是消息传送的目的地其它消息处理函数GetMessage从消息队列中得到消息DispatchMessage将GetMessage找回的消息分发给一个窗口程序TranslateMessage将一个键盘消息转换为字符消息TranslateAccelerator处理菜单命令对应的加速键IsDialogMessage确定一个消息是否为一个对话框所需要,如果是则处理这个消息PeekMessage检索一个消息,并存放这个检索信息到结构RegisgerWindowsMessage定义一个新的窗口消息,它保证将在整个系统中均可使用SendMessage的异线程消息处理流程WndProc()...接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列...SendMessage(hWnd…);接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列GetMsg(&msg)PostMessage的消息处理流程接收消息队列发送消息堆栈绘图请求消息列表其他发送消息队列WndProc()...GetMessage(&msg)DispatchMessage(&msg)..PostMessage(hWnd…);..输入管理输入管理由一套子系统完成,负责处理以下几个相互关联的窗口活动窗口每个线程有一个特定的窗口称为活动窗口焦点窗口活动窗口和其子窗口可以是焦点窗口焦点窗口能够接收来自键盘的消息前台窗口系统中一个特定的线程或者消息队列称为前台线程,前台线程中的活动窗口是前台窗口发送消息队列...接收输入事件的合适窗口输入消息队列键盘输入消息触摸设备输入消息窗口管理器PostMessage()PostMessage()触摸设备驱动程序键盘驱动程序GWE输入线程触摸输入事件和键盘输入事件的处理WindowsCE支持的用户输入的类型键盘鼠标触摸屏和输入笔输入面板手写体识别键盘输入模型键盘扫描码键盘设备驱动程序消息系统消息队列消息线程消息队列消息线程消息循环消息窗口过程系统消息队列虚键码转换消息字符WM_KEYDOWN消息收到此消息时,应该检查消息中包含的虚键码,以确定如何处理击键,虚键码包含在消息的wParam参数中。另外通常程序只处理非字符键产生的击键。典型代码框架:
caseWM_KEYDOWN: switch(wParam) {CaseVK_HOME:……Break;CaseVK_END:……Break;……Default:……Break;}字符消息用户输入字符时,WindowsCE并不自动产生字符消息,而是产生击键消息。应用程序消息循环应调用TranslateMessage函数将击键消息转换为相应的字符消息WindowsCE的四条字符消息WM_CHARWM_SYSCHARWM_DEADCHARWM_SYSDEADCHAR接收来自输入笔的输入通过输入笔在触摸屏上的点击可完成类似鼠标的操作。WindowsCE支持的输入笔的消息WM_LBUTTONDBLCLK—用户双击屏幕WM_LBUTTONDOWN—用户单击屏幕WM_LBUTTONUP—用户从屏幕上抬起输入笔WM_MOUSEMOVE—用户在笔尖接触屏幕时移动输入笔输入面板通信示意图输入面板调用IInputMethod借口创建IM,然后就可以接收用户输入IM通过IIMCallback接口将数据传输给输入面板应用程序键盘驱动分发系统GWES键盘事件输入面板IIMCallbackIMIInPutMethod手写识别WindowsCE.NET手写体识别引擎目前能够识别ASCII字符集的所有94个字符各种图形字符,如中文、日文、韩文,并产生相应的Unicode输出用于控制文本和图形的显示使用GDI画直线,曲线,闭合图形、文本、位图等GDI使用设备上描述表(DC)存储特定设备的绘图的属性,包括画笔、画刷、字体、位图、调色板等WindowsCE支持打印机设备描述表、显示设备描述表和内存设备描述表1.2GDI(GraphicsDeviceInterface)WindowsCE支持的GDI功能光栅字体和TrueType字体定制彩色调色板以及调色和非调色的彩色显示设备块传输功能和光栅操作码笔和刷子打印光标形状绘制功能WindowsCE不支持的GDI功能坐标空间转换函数,坐标设备与设备空间等价时区变换API彩色光标classGDIOBJ{public: staticHTABLE*m_pHTable;//句柄表
INT16m_nCount; //引用计数
UINT16m_nIndex; //句柄表索引
GDIOBJ(); ~GDIOBJ(); ULONGIncrement();ULONGDecrement(); voidRemoveFromHandleTable(); BOOLIsStockObject(); virtualBOOLDeleteObject(); virtualintGetObject(intCntBytesBuffer,void*pObject)=0; virtualDWORDGetObjectType()=0; virtualGDIOBJ*SelectObject(DC*)=0;}; 基本GDI对象的基类-GDIOBJGDI的图形原语矩形折线多边形椭圆圆角矩形原语是由驱动程序画线和填充小区域实现的画线的工具:画笔填充区域的工具:刷子画笔普通画笔BLACK_PENWHITE_PENNULL_PEN用GetStockObject函数选择特殊画笔的定义项目线宽颜色画笔类型画笔类型画笔类型PS_SOLIDPS_DASHPS_NULL画实线画点划线不画线刷子刷子是用于描绘闭合形状内部区域的图形对象WindowsCE支持三种类型的逻辑刷标准刷:WindowsCE维护了21种标准刷实心刷:在8X8像素的正方形中包含64个同色像素模板刷:使用CreatePatternBrush或CreateDIBPatternBrushPt来创建SelectObject函数将逻辑刷选入设备环境GetStockObject函数可以选择一种标准刷CreateDIBPatternBrushPt用来设计任何尺寸、颜色和模式的画刷原语转换成画笔和画刷以画矩形为例:调用设备驱动程序时,对于矩形区域内部使用一个画刷工具,而对于矩形外边缘,使用4个小区域。首先使用选入设备描述表中的画刷填充矩形区域内部,然后使用选入设备描述表中的画笔描绘矩形外边缘。WindowsCE中支持的画笔由于考虑内存空间的局限性,WindowsCE不支持在桌面Windows中支持的一些特殊画笔,如末端为方角形或斜角形,以及一些图形基本元素,如粗画笔、粗线椭圆等调色板调色板是输出设备能够显示的颜色的集合WindowsCE没有标准彩色调色板,每次创建设备环境时,WindowsCE将创建一个默认调色板不能改变默认调色板中的颜色,但是可以创建自己的逻辑调色板,并将它选入设备环境取代默认调色板创建逻辑调色板赋值LOGPALETTE结构的各成员,并将结构指针传递给CreatePalette函数调用SelectPalette函数将调色板选入当前设备环境调用RealizePalette函数使系统调色板与当前设备环境的调色板相同位图位图是一个位数组,将其映射到输出设备上的矩形像素数组是就可以创建图像位图是可以用来在设备环境中创建、绘制、操作和检索图像的图形对象可以将位图想象为一种由象素阵列组成的图画,这些象素可以在屏幕上显示出来分类:设备相关位图(DDB)设备无关位图(DIB)WindowsCE支持独有的4色位图格式DDB是依赖于特定DC特征的位图,并且不能很容易地移植到具有不同特征的DC没有自己的颜色表,只有在与创建位图的设备具有相同的显存结构的设备上才能正确显示WindowsCE支持1、2、4、8、16、24和32位颜色创建DDB调用CreateCompatibleDC创建一个与指定设备兼容的内存设备环境使用函数CreateBitmap和CreateCompatibleBitmap来创建位图CreateCompatibleBitmap创建了与传送给该函数的设备环境的格式兼容的位图当用CreateCompatibleDC函数返回的句柄进行绘制的,输出并不显不在设备的绘图表面,而是存储在内存中,调用BitBlt函数将位图数据从源设备环境中的位图复制到目标设备环境的位图StretchBlt函数将位图从源矩形复制到目标矩形,同时扩展或压缩位图以使位图和目标矩形匹配DIBDIB存储的图像中有它们自己的颜色信息使用CreateDIBSection来创建位图调用SelectObject函数将DIBSection选入设备环境DIB部件将内存DC与同样包含DC的位的缓冲区关联起来,以允许程序员在保持对组成位图的位的直接访问的同时在设备环境个选择DIB位图文件结构字体字体由它的字样、样式和大小表示字样决定了图案符号的特定特征,如字符中的粗笔划和细笔划的相对宽度样式决定了字体的重度(右浅到黑)和倾斜度(直体或斜体)WindowsCE支持光栅字体和TrueType字体技术,但在特定系统中只能使用一种类型的字体,而且是在设计系统时决定的,应用程序无法改变光栅字体利TrueType字体之间的区别与每个字符或符号的图案在各自的字体资源文件中的存储方式有关光栅字体的图案符号是一个表示单一字符的小位图,通常被认为与设备相关,不易缩放TrueType字体的图案符号包含轮廓和提示,被认为与设备无关,易于缩放字体(续)字体的图案符号存储在字体资源文件中光栅字体的字体资源文件存储在一个.fot文件中TrueType字体有两个文件:一个小的.fot头文件和一个包含实际数据的.ttf文件使用字形高速缓冲存储器来减少显示字形的时间有两种控制它的方法在建立WindowsCE系统时就设置好它的大小当字体被丢弃时在WindowsCE系统上运行独立的应用程序进行控制和字体句柄相联系默认容量为4KBLOGFONT结构在系统内部,字体是以一个LOGFONT结构来表示的。其结构成员意义如下表成员意义成员意义lfHeight设备单元中字体的高度lfStrikeOut是否加删除线lfWidth平均的字符宽度lfCharSet选择的字符集lfEscapement以0.1°为单位指定每行文本输出时相对于页面底端的角度LfOutPrecision输出精度lfOrientation以0.1°为单位指定字符基线相对于页面底端的角度lfClipPrecision剪辑精度lfWeight字体重量(范围0-1000)lfQuality输出质量lfItalic是否斜体lfPitchAndFamily字符间距和选择的字体族lfUnderline是否加下划线lfFaceName[LF_FACESIZE]字体名WindowsCE提供字体连接功能,从而可以用基字体显示基字体中不存在被连接字体中存在的字符枚举注册表登基键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink
的子键可以得到被连接字体和基字体之间的映射情况增加附加的连接:创建附加的子键"basefontfacename"="pathandlinkto,""facenameofthefonttolink"允许字体连接基字体被连接字体连接创建用户自定义字符最终用户定义的字符(EUDC)可以为设备定义字符或图案符号EUDC总是需要与一个双字节字符集(DBCS)和一种TrueType字体相关联创建EUDC在指定范围或保留字符的范围内选择一个字符值用EUDC编辑器创建字符的形状和样式向TrueType字体中相应于选择的字符值的记录中增加形状和样式信息EUDC字体与另一种字体关联将EUDC字体复制到一个文件夹中,EUDC字体文件的扩展名是.tte调用EnableEUDC(FALSE)修改HKEY_CURRENT_USER\EUDC注册表登记键在HKEY_CURRENT_USER\EUDC下创建子键在上步创建的子键中输入包含EUDC的字体路径调用EnableEUDC(TRUE)使用字体的函数CreateFontIndirect创建字体GetTextMetrics查询字体特征EnumFontFamilies枚举字体显示驱动程序接口(DDI)是WindowsNTDDI的子集,仅使用了最基本的图形引擎函数和驱动程序函数显示设备驱动程序和WindowsNT的差别一般都具有相同的功能,GDI并不查询确定程序的参数及性能信息遇到复杂操作时显示驱动程序将回调GDI,将操作分成简单的几步被编译成DLL文件而LIB文件显示驱动程序必须实现一套DDI函数,以完成初始化和显示图像的功能显示驱动程序还使用图形原语引擎(GPE)类,提供了基本的代码,使用这些代码导出硬件的显示驱动程序,提高了开发和测试效率,而且使显示驱动程序对硬件加速更加容易GDI的组件2设计Windows用户界面设计原则设计窗口和对话框设计菜单选择控件使用颜色的原则使用图标给予用户控制权使用熟悉的概念保持一致性允许交互式发现提供反馈信息强调美观简化设计支持多种输入方法设计原则设计窗口和对话框WindowsCE不支持用户改变窗口大小三种对话框应用程序定义的对话框消息框属性表单OKX取消/关闭确定当X和OK执行同一函数时,选OK不要同时在对话框和命令栏中同时放OK按钮原则对话框中的按钮设计菜单WindowsCE不支持菜单栏,而是将菜单栏和工具栏组合为命令栏四种类型的菜单弹出式滚动式级联式下拉式使用命令栏为了尽量扩大客户区屏幕可用尺寸,WindowsCE支持一种新的控件——命令栏组合了菜单栏、工具栏和可选的地址栏命令栏的长度可以从240像素到640像素.这取决于屏幕的分辨率WindowsCE支持多个命令栏命令栏里可以放置组合框编辑框按钮选择控件窗口控件--发送WM_COMMAND消息公共控件--发送WM_NOTIFY消息基础控件文件控件标度控件信息控件杂类控件窗口控件复选框下压按钮组合框编辑控件滚动条单选按钮组框下拉式列表框列表框静态控件基础控件命令条命令栏工具栏属性表单卡片控件Rebar控件文件控件标题头控件图像列表树形视图列表视图旋转框轨迹条信息控件进度条日期和时间选择器状态栏日历工具提示杂类控件HTML浏览器RichInk语音录制器使用颜色的原则屏幕上一次显示的颜色不超过四种,整个应用程序使用的颜色不超过八种将颜色与其他强调技术一起使用,以区分界面上的区域或识别重要功能避免使用频谱梢对的颜色组合,如红和蓝或黄和紫,它们会图像显得模糊设计应用程序时主要考虑灰度级显示器用颜色对比度提高视图效果,一旦用户的眼睛适应了模糊的颜色,可能就无法辨别避免使用缺乏对比度的颜色和具有相同亮度的颜色,这些颜色不易区分使用黑色、白色和灰色提高分辨率使用通用的颜色关联提高熟悉程度,如红色表示停止,绿色表示前进使用图标图标表示属性或任务,有效的图标可以清楚地表现其功能图标通常用于按钮上,但也可以用于进度指示器3定制用户界面创建一个皮肤可以换肤的控件皮肤示例代码其它用户界面定制项目3.1创建皮肤皮肤允许定制控件及其它用户界面元素的外表通过修改默认的关于控件及窗口的非客户区的drawing代码来创建定制用户界面每个控件对应一个C++类需要改变类的方法的实现实例XP皮肤创建皮肤(续)通过更改皮肤可以适应限制、增加灵活性及丰富产品的外表WindowsCE将可换肤的元素的drawing代码和其它代码分开,以支持创建皮肤Drawing代码所在的文件的目录$(_WINCEROOT)\public\common\oak\drivers\skinnableuiPlatformBuilder自动将更改后的实现并入GWES模块,并包含在操作系统中3定制用户界面创建一个皮肤可以换肤的控件皮肤示例代码其它用户界面定制项目3.2可以换肤的控件公共控件标题头控件、进度条、Rebar、工具条和跟踪条窗口控件按钮、组合框、列表框、滚动条、静态控件控件所在路径$(_WINCEROOT)\public\common\oak\drivers\skinnableUI\gwe定制控件的原则
-避免使用以下控件难以使用的控件挨的太近的控件难以理解的控件难以区别的的控件被隐藏的控件不可预测的控件3定制用户界面创建一个皮肤可以换肤的控件皮肤示例代码其它用户界面定制项目3.3代码位置:buttonview.cppVoidButtonView_t::DrawGroupBoxText(HWNDhwnd,/*窗口句柄*/HBRUSHhbr,/*刷子*/HDChdc,/*设备环境*/WORDalignment/*对齐*/){RECTrc;CalcRect(hwnd,hdc,&rc,CBR_GROUPTEXT,0,alignment);/*计算矩形*/GweBypassCoredllThunk_t::InvalidateRect_I(hwnd,&rc,TRUE);/*使矩形无效*/PaintRect(GweBypassCoredllThunk_t::GetParent_I(hwnd),hwnd,hdc,hbr,&rc);/*重绘矩形*/return;}通过更改代码来实现定制皮肤,如更改对齐等3定制用户界面创建一个皮肤可以换肤的控件皮肤示例代码其它用户界面定制项目3.4其它用户界面定制项目非客户区窗口系统颜色字体操作系统用户界面组件内存不足用户对话框启动用户界面触摸屏刻度屏非客户区窗口更改代码的位置:\WINCE400\public\common\oak\drivers\skinnableui\gwe\nclient\Nclientview.cpp可以更改的方法(类NonClientView_t)BoundingRect
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 套圈活动预算策划方案
- 学校娱乐活动策划方案
- 女生茶艺活动策划方案
- 婚庆道具活动策划方案
- 娱乐公司营销策划方案
- 婚庆公司联盟策划方案
- 孝道活动策划方案
- 妇女节公司策划方案
- 某中学学生集会安全保障制度
- 学校活动小分队活动方案
- 建筑工程管理考试模拟题及答案
- 浙江省“桐浦富兴”教研联盟2024-2025学年高一下学期6月学考模拟化学试卷(含答案)
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(原卷版)
- 2025年浙江省学考历史总复习模拟卷(二)(原卷版)
- 2025年高考河北卷物理高考真题+解析(参考版)
- 中医老人保健讲座课件
- -2024-2025学年统编版语文二年级下册 期末复习练习题(含答案)
- 2025至2030中国室内滑雪场行业项目调研及市场前景预测评估报告
- 2025年中国融通农业发展有限集团有限公司招聘笔试冲刺题(带答案解析)
- 模具外发加工与验收标准及流程
- 建筑施工内审检查表(各部门完整)(共13页)
评论
0/150
提交评论