随笔分类 -  SOUI教程

摘要:从Windows 2K开始,MS为UI开发引入了分层窗口这一窗口风格。使用分层窗口,应用程序的主窗口可以是半透明,也可以是逐点半透明(即每一个像素点的透明度可以不同)。可以说,正是因为有了分层窗口,在Windows上开发的应用程序的UI才真正炫起来。在UI的主窗口上加一个分层窗口的风格对于一个稍有点... 阅读全文
posted @ 2015-01-07 22:23 启程软件 阅读(5352) 评论(2) 推荐(1) 编辑
摘要:SOUI是一套100%开源的基于DirectUI的客户端开发框架。基于DirectUI设计的UI虽然UI呈现的效果可以很炫,但是相对于传统的win32应用程序中每个控件一个窗口句柄的形式,渲染效率是一个很重要的问题。在SOUI系统中提供了三种武器可以用来提高渲染效率:第一种武器:选择更高效的渲染引擎... 阅读全文
posted @ 2014-12-30 15:35 启程软件 阅读(4255) 评论(0) 推荐(0) 编辑
摘要:在MFC中,通常可以通过重载CWnd::PreTranslateMessage这样一个虚函数来实现对一些窗口消息的预处理。多用于tooltip的显示控制。在SOUI中也实现了类似的机制。要在SOUI中实现PreTranslateMessage,我们首先需要实现一个接口: struct IMes... 阅读全文
posted @ 2014-11-27 22:22 启程软件 阅读(3660) 评论(0) 推荐(0) 编辑
摘要:内容渲染速度是决定一个UI成败的关键。无论UI做得多华丽,没有速度都没有意义。在MFC,WTL等开发框架下,每个控件都是一个窗口,窗口只需要画前景,背景。因为窗口之间的内容不需要做混合,一个子窗口的一次刷新只涉及该窗口本身,和其它窗口无关,因此这样效率很高。但是美中不足在于,窗口之间内容是孤立的,要... 阅读全文
posted @ 2014-11-26 12:41 启程软件 阅读(3360) 评论(0) 推荐(0) 编辑
摘要:当窗口大小需要根据内容来确定时,使用XML布局可能需要做一些特殊的处理。例如:不管窗口多大,我需要将该窗口相对于父窗口居中在XML中应该怎么处理?如果窗口大小是固定的(如, 100 *100),这样pos属性可以定义为"|-50,|-50,|-50,|-50"即可。当窗口大小不确定时,SOUI中提供... 阅读全文
posted @ 2014-11-20 16:44 启程软件 阅读(6418) 评论(0) 推荐(0) 编辑
摘要:SOUI是一套基于Win32 SDK的窗口开发的一套DirectUI框架。在SOUI中除了有真窗口使用窗口消息通讯机制外,还有SOUI控件之间的通讯,及控件的事件处理等。1、真窗口消息通讯因此可以使用::SendMessage这个API来与宿主窗口通讯。在任意一个地方只要获取到了SOUI的宿主窗口句... 阅读全文
posted @ 2014-11-15 22:39 启程软件 阅读(6405) 评论(3) 推荐(1) 编辑
摘要:前言定时器是win32编程中常用的制作动画效果的手段。在Win32编程中,可以使用::SetTimer来创建定时器,定时器消息会被会发到调用SetTimer时指定的HWND。在SOUI中一般来说只有一个宿主窗口有HWND,所有的SWindow都属于一个宿主窗口,如此一来直接使用::SetTimer创... 阅读全文
posted @ 2014-10-09 23:26 启程软件 阅读(4802) 评论(1) 推荐(0) 编辑
摘要:前言:无论一个DirectUI系统提供的DUI控件多么丰富,总会有些情况下用户需要在DUI窗口上放置有窗口句柄的子窗口。为了和无窗口句柄的子窗口相区别,这里将有窗口句柄的子窗口称之为真窗口。每一个使用SOUI创建的界面都是从SHostWnd派生出来的。SHostWnd本身就是一个有窗口句柄的真窗口。... 阅读全文
posted @ 2014-09-29 21:49 启程软件 阅读(8249) 评论(5) 推荐(0) 编辑
摘要:SOUI相对于DuiEngine一个重要的变化就是很多模块变成了一个单独的DLL。然后很多情况下用户可能希望整个产品就是一个EXE,原来DuiEngine提供了LIB编译模式,此时链接LIB模式的DuiEngine就行了。但是SOUI默认至少Utilities那个模块是不提供LIB编译模式的。uti... 阅读全文
posted @ 2014-09-08 22:17 启程软件 阅读(4714) 评论(0) 推荐(0) 编辑
摘要:SOUI资源管理模块从前篇已经讲到在SOUI中所有资源文件通过一个uires.idx文件进行索引。这里将介绍在程序中如何引用这些资源文件。在SOUI系统中,资源文件通过一个统一的接口对象读取:namespace SOUI{ enum BUILTIN_RESTYPE { RE... 阅读全文
posted @ 2014-08-25 22:34 启程软件 阅读(8427) 评论(2) 推荐(0) 编辑
摘要:尽管SOUI已经内置了大部分常用的控件,很显然内置控件很难满足各种应用的形式各异的需求。因此只有提供足够的扩展性才能满足真实应用场景。除了将系统尽可能的组件化外,SOUI在控件自绘(SWindow)及绘图对象(ISkinObj)两个方面提供用户扩展。绘图对象(ISkinObj)的扩展系统内置了如SS... 阅读全文
posted @ 2014-08-23 22:50 启程软件 阅读(7049) 评论(0) 推荐(2) 编辑
摘要:为UI在不同地区显示不同的语言是产品国际化的一个重要要求。在SOUI中实现了一套类似QT的多语言翻译机制:布局XML不需要调整,程序代码也不需要调整,只需要为不同地区的用户提供不同的语言翻译文件即可。在SOUI中,我们实现了一个使用明文XML的语言翻译模块:translator.dll为了使用多语言... 阅读全文
posted @ 2014-08-23 16:26 启程软件 阅读(5577) 评论(1) 推荐(0) 编辑
摘要:SOUI中提供了大部分常用的win32标准控件的实现,如pushbutton, checkbox, radiobox, edit, richedit, listbox, combobox, treectrl, listctrl (report), hotkeyctrl等。大部分控件在接收用户输入后,... 阅读全文
posted @ 2014-08-22 23:34 启程软件 阅读(10209) 评论(0) 推荐(1) 编辑
摘要:从0开始一个SOUI项目 1、环境配置 SOUI项目本质是一个基于Win32窗口的应用程序。因此首先我们可以从Win32窗口应用程序向导创建一个简单的Win32项目。 并在第3页选择“Window应用程序” 选择“完成”后生成一个Win32应用程序骨架。 项目的文件结构如下图: 要使用SOUI开发程 阅读全文
posted @ 2014-08-21 23:53 启程软件 阅读(14500) 评论(11) 推荐(1) 编辑
摘要:SOUI的初学者刚开始可能难以搞清楚在SOUI中显示一个图片资源的流程,这里做一个简单的示范。首先我们准备好一张图,以下图为例。第一步,我们首先把这个图片文件复制到demo的uires目录下,新建一个目录jpg,下面只有这一个文件9.jpg第二步,我们需要在uires.idx中引入该图片资源 ... 阅读全文
posted @ 2014-08-21 00:06 启程软件 阅读(8530) 评论(0) 推荐(0) 编辑
摘要:窗口布局的概念 每一个UI都是由大量的界面元素构成的,在Windows编程,这些界面元素的最小单位通常称之为控件。 布局就是这些控件在主界面上的大小及相对位置。 传统的布局一般使用一个4个绝对坐标来定义一个控件在主窗口的位置。对于窗口是固定大小的界面来说,这种方式是最简单有效的。 然而问题在于在Wi 阅读全文
posted @ 2014-08-20 23:34 启程软件 阅读(24214) 评论(17) 推荐(3) 编辑
摘要:什么是资源?现代的软件只要有UI,基本上少不了资源。资源是什么?资源就是在程序运行时提供固定的数据源的文件。在MFC当道的时代,资源一般就是位图(Bitmap),图标(Icon),光标(Cursor),对话框模板(Dialog)等资源。在SOUI中,资源主要变成了XML布局和PNG图片文件。SOUI... 阅读全文
posted @ 2014-08-20 00:27 启程软件 阅读(23872) 评论(12) 推荐(2) 编辑
摘要:SOUI-DEMO界面预览在回答SOUI能做什么之前,先看看SVN中demo工程的界面截图:使用SOUI实现上面的界面主要的工作全在配置几个XML文件,基本不需要写C++代码。(如何配置XML布局将在后续文章中讲解)从零开始生成一个使用SOUI的应用程序以SOUI的demo为例,我们看在SOUI中如... 阅读全文
posted @ 2014-08-14 23:52 启程软件 阅读(20316) 评论(3) 推荐(0) 编辑
摘要:源代码的获取SOUI的源码采用SVN管理。SVN:http://code.taobao.org/svn/soui2这里主要包含两个目录:trunk 及 third-part。trunk目录保存SOUI项目的全部代码,third-part保存soui系统使用到的不方便放到trunk的第三方库,目前只有... 阅读全文
posted @ 2014-08-12 22:50 启程软件 阅读(15308) 评论(7) 推荐(2) 编辑
摘要:概述用C++做产品最痛苦的是什么?肯定是做UI。SOUI的使命就是把痛苦的UI变化成快乐的UI。什么?UI还能快乐?脑子进水了吗?当你看完这个系统教程的时候相信你面对UI至少不会再痛苦。你可以对于PM说,UI?Just SO SO!闲话少说,进入正题。SOUI是什么?SOUI是启程软件(其实就是我个... 阅读全文
posted @ 2014-08-10 23:56 启程软件 阅读(37573) 评论(12) 推荐(4) 编辑