【HTMLayout学习】学习缘由、什么是HTMLayout?

      作为一名喜欢耍耍程序玩的人,编写一个小软件是家常便饭,但是作为一个酷爱C++的人,编写了一个感觉非常好的程序,但是界面看的自己都烦死了,就好像是正吃饭遇上了一坨便便,恶心又晦气。

       我承认,自己没有美的天赋,虽然一直都尽量做到整洁和简单,但是一成不变的界面真心让人提不起追求的勇气。话虽夸张,但不可避免的是,没有好的界面,再好的程序也难免跳坑。

       C++不是没有好的界面,如C skin, Direct UI , 还有金山、迅雷等厂商的界面SDK,但是那都是人家的,要么是收费,要么就是一个庞大的包袱,踏破天涯,无觅处。

       我希望的界面库应该是什么样的呢?我想:1、轻量级。这个很重要,我不可能为了一个界面附加N0MB的其他数据,极不方便。2、自由度高。C skin是我挺喜欢的一个库,原因就是它非常小,使用非常方便,但是代价就是除了设计好的统一的风格,我不能对每个控件做出其他任何的修改,想要个性化地实现,必须重绘。每个C++的程序员都会对重绘深痛恶疾的,尼玛,还不如我自己贴图呢。最后,它已经停止更新了。3、使用要方便。没有人喜欢太过复杂的技术。Direct UI 在这方面就做的还可以,至少有完善的文档和例程教会我们怎样去做,但是我们虽然离开了贴图的井底,但是还是在别人的竹竿上跳舞,再加上动则N多money的付出,像我这样的自由爱好者是负担不起的。

       我承认,我还没有找到我的“梦中情人”,我要说的HTMLayout也不是。但是,作为一个曾经收费的库,它的理念和实现都是一个巨大的创新,很多人说他老了,(似乎也停止更新了,不确定),但是我喜欢他。

       (个人理解)从使用者角度来看,HTMLayout将程序分为2层,使用的是改进的IE引擎。在界面层,他依靠改进的IE引擎,通过HTM页面创建窗体界面,通过引擎的内部消息循环连接到主程序消息循环中,响应界面上的各种事件,主题逻辑由C++完成。引擎中的IE解释器使用的是修改过的,不可以使用javascript和dom等的动态语言,但是添加了很多其他的处理功能补充。

网站:http://www.terrainformatica.com/htmlayout/
国内做的比较好的: 快手 http://www.aau.cn/

------------------------------------官方的说明(翻译)-----------------------------------------------------
HTMLayout: 快速,轻量、嵌入式的,基于HTML/CSS渲染技术和布局管理的界面引擎组件
学习HTMLayout之前,你一定想了解HTMLayout能做什么?官网上有一项统计,当前HTMLayout被安装在超过6,700,000台电脑上,使用在不同的公司不同的产品中。这也意味着每天有大约43,000个用户下载并安装以HTMLayout开发的产品。
基于HTML引擎的HTMLayout组件可以给你的应用程序带来以下的优势:
  • 快速 HTML渲染仅占用非常短的线性时间
  • HTML/CSS 针对界面布局的功能增强。包括:%% 长度定义 和 expandable backgrounds(九宫格背景定义) 允许你使用更灵活的以屏幕为导向的布局策略。
  • 用户自定义的 behaviors API 允许你为HTML 元素定制行为,以响应不同的键盘和鼠标事件。
  • 和宿主程序松散耦合,不存在任何组件级的交互。换句话说,类似于传统的窗口控件,HTMLayout仅使用WM_NOTIFY消息机制和宿主窗口对话。
  • 较小的发布尺寸: HtmLayout.dll 仅有600KB大小(压缩后)
  • 无依赖性 和客户电脑上安装的浏览器无任何关联。

HtmLayout 可以帮助你实现:


  • 创建“Web类型”用户接口的应用程序;
  • 把用户交互逻辑从你的应用程序中分离出来;
  • 管理复杂布局的录入表单;
  • 创建“可换肤”的用户界面——使用HTML作为你应用程序的皮肤;
  • 构建帮助系统,HTML电子书,轻量级浏览器,等等;
  • 开发支持多语言的用户界面;
  • 创建可自由缩放的界面布局,控件随界面大小自动重新布局;
  • 打印和打印预览功能。打印API允许你任意调整你的HTML输出;
  • HtmLayout是基于报表应用的最佳解决方案;

HtmLayout 基于Window技术实现,以DLL动态链接库的方式提供。 HTMLayout 未使用任何复杂的组件技术,因此它的启动速度非常非常的快。快到什么程度呢?真是难以描述 .... 嗯,就让数字来说话吧:

IE 6.0

FireFox 1.0

Opera 7.5

HTMLayout
(browse.exe)

内存占用(活动窗口)

8,300 kb

11,000 kb

6,200 kb

5,100 kb

内存占用 (非活动窗口,最小化)

1,900 kb

1,500 kb

2,700 kb

550 kb

内存峰值

19,000 kb

23,000 kb

15,548 kb

9,100 kb

句柄数

344

194

117

128

GDI 对象

228

160

351

54

上面这些数字是在浏览 the Complexspiral Redux 页面下测试出来的。 数字也许并不精确 - 只是用来给你一个大概的印象。 实际上这样的对比诚实点来讲并不公平。HTMLayout 被设计为一种嵌入式组件,而很多拖累大型浏览器性能的东西,例如脚本支持,在HTMLayout中都被“故意”去掉了,因为,HTMLayout只为软件而生。

 
什么是HTMLayout - 国内介绍版,呵呵

HTMLayout是一个免费的开源界面库(核心未开源),以DLL的方式运行,并提供一个API的调用接口和一系列的C++封装和sample例程。HTMLayout相当于一个轻量级浏览器引擎,可以高效的解析和渲染HTML网页。其几乎支持所有的HTML元素和CSS3标准,并根据界面库的特征,做了很多有用的功能性扩展,简要列举如下:

1.强大的CSS+扩展,支持九宫格的图片扩展和拉伸模式,增强了容器的前景和背景图片填充能力,支持PNG图片透明和动画;
2.支持多样化功能强大的布局模式,有效了解决了标准HTML中流模式布局的不足;
3.功能完善的事件传播机制和定时机制,通过behavior行为在应用中通过c++类和网页元素进行交互,制作网页效果易如反掌;
4.功能齐全的字符串处理和及c++类,并提供了功能完善的JSON字符串和类Variant的VALUE值类型,有效的解决多字符/UNICODE/UTF8/BYTE等字符串之间的转换和操作。
5.强大的图像处理API,可以在任何的HTML元素之上绘图。
6.支持自定义控件,例如Flash、Chart等第三方ActiveX元素的绘制,方便了界面库的扩展;
7.运行速度飞快,占用内存低,性能高效。
8.和DirectUI一样,控件以无窗口模式运行,所有的控件都是绘制在界面上;
 
HTMLayout的应用

目前,基于HTMLayout的应用在全世界已经有成千上万个。在HTMLayout的官方网站上,列举了一些比较知名的企业:http://www.terrainformatica.com/customers.whtm

•Symantec Corporation
•Hewlett-Packard Corporation
•Motorola company
•Real Networks, Inc. •Alawar Entertainment, Inc. •EverNote Corporation •Munnin •Gaijin Entertainment •ALWIL Software, home of the AVAST! •Maxthon •BitDefender •SpamFighter

国内的应用,例如傲游浏览器3.0,其界面基于HTMLayout设计。由于HTMLayout中文文档缺乏,且早些年处于商业收费状态,在国内的应用并不广泛,甚至很少有人谈论。作为这个技术的受益者,国内一牛人建立一个推广群,希望能带动这个技术的发展。群:145775715 欢迎有需求的加入!

同传统的IE浏览器对比

作为对比,IE浏览器也可以通过ActiveX嵌入到对话框中的方式进行基于Web的开发,但IE浏览器作为一个界面引擎有以下不足:

1.IE浏览器对HTML标准和CSS支持不足,不同版本的支持经常有很大差异。导致在不同的客户端上部署经常出现问题;
2.IE基于COM模型集成,应用程序的代码与IE之间通讯困难,往往需要大量的COM接口类进行辅助,而且字符串形式单一,很多交互通过JS代码方式进行,性能低下;
3.图片透明和扩展不灵活,不能支持复杂的背景和前景图片;
4.流模式的布局在支持复杂的网页布局方面力不从心。
5.加载速度慢,内存占用高。
 
同传统的贴图方式比较

传统的贴图界面具有较强的用户群体,主要是通过把界面分隔成小块的图片,在界面更新时绘制到界面的对应位置。这种方式完全模拟了Windows界面处理的逻辑,在性能上具有较大优势。但缺点依然很显著:

1.界面的切割相当麻烦,用户需要精确的知道切割的坐标和大小,稍有不慎便面目全非;
2.仅支持界面的换肤,功能单一,对界面元素和系统之间的交互性没有任何支持;
3.缺乏一个统一的标准来统一,各种API的使用方式大相径庭,各显神通
 
同DirectUI的对比

受到MSN Messager界面技术的影响,DirectUI近几年有渐热的趋势,很多技术人员开始研究DirectUI的原理。DirectUI的原理其实很简单,也是通过图片绘制的方式把界面和控件绘制在一个平面空间上,摆脱了传统windows中父子控件层层嵌套的事件传播机制,并提供基于脚本的界面交互机制,在性能方面具有较大优势。缺点如下:

1.目前缺乏统一的技术规范和文档支持,很多商业库实行技术封锁,卖价高昂,让普通开发者望尘莫及;
2.开源库功能简单,缺乏有效的文档和界面设计器支持,开发效率低下;
3.缺乏如HTML中DOM元素一样的灵活的层次关系,系统和界面交互较为复杂;
4.具有较高的学习曲线。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值