摘要:
10 插件系统设计本章作为终章将模仿Windosw8的开始屏幕设计一个插件系统,插件将由UI、业务逻辑组成。10.1 UI插件的可行性插件被编译为dll,被主程序载入的dll将拥有自己独立的栈空间。UI主程序将拥有一套GXUI框架对象(包括UIDXInit、UIAnimateManage、UIMessageLoopManage、UICamera、UIRender、UIWinShell),如果插件包括UI,那么该插件中也将包含一套GXUI框架对象,这样会产生冲突。为解决该冲突,设计中将已主程序的GXUI框架对象为主,并引用到UI插件中。具体实现方式为,在框架对象中添加一个引用赋值函数,已类UIA 阅读全文
阅读排行榜
8 控件设计
2013-05-04 17:14 by 浪客倩心, 1434 阅读, 收藏,
摘要:
8 控件设计 一个UI框架需包含大量UI Widget来获得实用价值,而其中大部分表现为控件,还有部分的窗口部件等。8.1 资源DLL GXUI库作为一个GUI库,大部分控件会用到默认的图片资源,将这些资源封装到一个默认的dll中供程序调用。 文件夹Resource包含了所需要的文件资源,GXUI库通过建立工程GUIResource来生成命名为GUIResource.dll的资源dll。工程中的图片文件都是手动添加编辑,其中文件resource.h中定义的图片ID将被添加到GXUI库的UIUtil.h/cpp中,而资源文件GUIResource.rc中对默认支持的BMP文件类型标记为BITMA 阅读全文
5 DirectUI消息循环机制
2013-04-09 16:51 by 浪客倩心, 1417 阅读, 收藏,
摘要:
5 DirectUI消息循环机制DirectUI意为直接在父窗口上绘图(paint on parent dc directly),最大特点为窗口没有句柄的概念,为逻辑上的窗口,真实的绘制过程集中到顶层句柄窗口(即有句柄的真实窗口)的绘制函数中完成。一个UI需呈现给用户各种信息,并能和用户进行交互,交互分两种:1)对外部设备事件(包括鼠标、键盘等)及时响应;2)对内部通告(如界面上数据更新等)及时反馈;一般外部设备事件和内部通告都被定义为消息,通过消息循环处理机制来完成交互过程。在WIN32对应的消息中包含句柄来标识真实窗口,而DirectUI所对应逻辑窗口没有句柄信息,因此重新定义适UI消息, 阅读全文
3 2D元素绘制
2013-04-09 16:45 by 浪客倩心, 975 阅读, 收藏,
摘要:
3 2D元素绘制在DirectX 9.0中去掉了DirectDraw(存在于DirectX 8.0中),所以只能选用D3D来完成2D绘制,其实现方法有2种:1)固定摄像头以及各UI元素的Z值,这种实现优点为可以使UI上的控件实现部分3D特效,如UI元素旋转,以及在动画过程中改变某UI元素的Z值实现远近拉升效果,缺点为计算复杂,实现较困难;2)采用DrawPrimitiveUP()函数来绘制D3DFVF_XYZRHW类型的顶点数据。对于类型标识为D3DFVF_XYZRHW的顶点数据,Direct3D不再执行世界、观察和透视变换以及光线运算,它会认为顶点已经经过了这些处理(即顶点的X、Y坐标值等于 阅读全文
9 控件布局
2013-05-09 18:43 by 浪客倩心, 919 阅读, 收藏,
摘要:
9 控件布局控件布局主要起二个作用:1)空间充分利用;2)自动计算,排列美观;9.1 UITab标签UITab依旧设计为控件,其设计目标如下:1) 已标签的方式管理多个窗口,分为标签栏与窗口空间;2) 标签栏方向支持x轴和y轴;3) 切换标签时支持动画效果;4) 标签栏可以隐藏;5) 子窗口传递给UITab的通告消息能被继续传给UITab的父窗口;对于第5点目标,将透射子窗口消息标志置true,参与透射的消息一般为通告,滚动条消息,具体的消息处理过程添加到函数DefHandleMessage()中,代码如下。bool UIWinBase::DefHandleMessage( …… ){ // 阅读全文
浙公网安备 33010602011771号