HTControl界面库

 

HTControl界面库

 

作者

李海涛

日期

2012-10-01

 

文档只是简要说明,下载示例工程能够更好地了解

   

一 起因及示例下载

          VC界面编程为开发者提供了默认控件,但是这些控件很多情况并不能满足一些软件的需求,从外观上来说,默认控件都是统一的灰色,总不能让用户去更改系统主题,主题外观也不一定是用户想要的。控件的行为也不一定能满足需求,比如CSliderCtrl,当用户点击窗口某处时,滑块不一定停留在鼠标下面,但是有些情况需要滑块停留在鼠标下面,比如播放进度的控制。

        正是因为有很多类似的情况,所以一些所谓第三方界面库出现了,还出现了所谓的DirectUI,其实就是无子窗口。但是这些界面库有些价格不低,个人购买的话不大合适。

       我习惯对自己的代码进行完全的掌控,用别人或其它公司的界面库总不太放心,也不方便调试。而且需求是千变万化的,一种界面库不能满足所有的需求,可以做一些比较通用的控件,开发具体业务软件时可能会有几种控件需要定制,通用的控件肯定是占大多数的,这样就不会严重影响开发进度。     

所以我独立设计并开发了自己的HTControl界面库,没想到啥合适的名字,”HT”名字首字母,”Control”取控件的意思并做了一个示例工程HTControlDemo,可以在http://download.csdn.net/detail/htcontrol/5453249下载。需要调试的需要安装VS2005或以上版本,只想看看效果的直接打开EXE即可,希望大家多提宝贵意见。工程中的图片都是七拼八凑的,有些是我用PS做的(PS用的很烂),大家只看界面库实现的功能吧,美化需要专业美工人员。

       先简要说明一下,以后会有文章具体介绍 (其实也不需要介绍啥,一看头文件全明白了)。只要我有空余时间,就会不断地更新和扩充此界面库。

 

二 简易的使用方式

        界面库中控件都是独立的C++类,它们之间没有复杂关系,注意事项也几乎没有,要想实现某个功能直接调用接口即可。举个MFC的例子:

更改CStatic的背景色使它与父窗口一致,熟悉MFC开发的都知道:添加OnCtlColor或者重绘控件。这么小的一件事,不应该这样麻烦。从类的角度来说,应该调用一个接口传递一个颜色参数即可,HTControl界面库的做法如下:

m_HTStcR.SetParentBgColor(m_clrBg);

 

三 灵活的界面表现

现在很多软件都支持换肤,实现原理就是重绘,但是每次换肤都修改代码重绘的话就太麻烦了。一种灵活的做法就是在控件上绘制加载的外界图片,当需要换肤的时候不用更改代码,只需更换图片。HTControl界面库支持这种做法。

四 界面无闪烁

        合格的界面库应该做到无闪烁,要测试界面是否有闪烁,可以通过迅速拖拽框架窗体边框调整窗体大小来看界面是否闪烁,这种方式相对其它方式算比较残酷了,此方式还可大致看出绘制的效率:看窗口大小的改变是否明显滞后鼠标拖拽。还有一种方式看绘制效率:拖拽其它窗体迅速经过本界面库实现的窗体上,看本界面库实现的窗体上残留其它窗体或者空白多长时间,好的实现应该几乎看不到残留和空白。HTControl界面库无闪烁 (目前只有富文本编辑控件,对其剧烈操作时存在轻微闪烁)。至于绘制效率,大家可以使用自己的方式进行测试。

 

五 远离资源文件

经常听见有些程序员说:“啊这个太简单了,一阵儿拖拽控件就OK了”。我的经验和水平可能有限,说说我的看法:VC界面编程,使用资源文件拖拽控件的方式来实现界面是一种很不好的方式,代码的移植性很差,与资源文件绑定在一起(当然你也可以从资源文件中把本界面的信息提取出来,控件ID保持一致等),使用资源文件拖拽控件的方式还有不好的地方,我也无法用文字准确说出来,可能要说很多,我相信具有丰富开发经验的人一定有很深的体会。我现在做界面的时候是极少使用资源文件了(公司强迫的不算),一切动态创建,在代码移植的时候只需copy语句或者整个.h, .cpp,其它不用copy。在使用本界面库的时候也建议动态创建一切,当然很多控件也只能这么做。

六 不需要附加的学习

如果您花了钱或者好不容易找到一个界面库,但是却不知道该怎么使用它或者需要经过一定时间的学习才能使用,那就郁闷了,培训开发人员需要不小的花费,不能投入自己的产品研发还得正常给工资。这样的界面库不能算一个很好的界面库(当然可能存在一切都很好,就是需要附加学习的),一些公司可能不适合使用。

本界面库中控件都是独立的C++类,它们之间没有复杂关系,注意事项也几乎没有,要想实现某个功能直接调用接口即可。对C++和界面编程稍有经验的人打开头文件看一下提供了哪些接口即可使用。

界面库中控件的消息都保持跟默认控件的一致,所以只要你会默认控件的使用就会本界面库的使用,

已经完成的类和将来开发的都争取使用API的方式开发,这样这些控件就不局限于windows下的具体框架,可以在SDKMFC wxWidget等等方式下使用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值