非常早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就立即開始刷博文,不能辜负自己的一番热血,我并非写界面的高手,仅仅想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。
能来到这里看我写文章,
第一说明你是windows下开发的程序猿!
第二你对美丽软件界面开发感兴趣!
第三也许你也像我当初一样对C++软件界面开发 无所适从!也许我写的不专业,可是我仅仅想让利用C++编写client界面的新手程序猿们对C++界面开发没有误区 。
我是从windows开发出身,深知当我们想要去用C++开发界面的时候是多么的操蛋,回头看看我们熟悉的MFC win32SDK
,做出来的界面咋就那么难看,对照网上的那些绚丽软件我们的软件顿时显得档次非常低了。做软件界面技术并非多么高深,也并非非常难,仅仅要找对路子非常easy上手。尽管说的看似简单,可是写起来确实非常繁琐复杂,同一时候 须要对windows消息了如执掌才干写好C++ UI。
首先说说写界面的几种方式,在windows以下:
第一种界面开发方式
基于windows控件的自绘,相信非常多程序猿都听过MFC自绘等等术语,确实写起来不好写,实际上是MFC不好理解的缘故,真正的术语应该叫做win32界面自绘更能防止新手走进误区,由于MFC就是封装的win32 API,所以MFC界面自绘 就是win32界面自绘.原理大概就是我们拦截windows绘制界面的消息,然后我们取代他来绘制界面,从而实现我们的自己定义界面。非常多皮肤库通过Hook技术,拦截了windows的UI消息,然后实现了总体UI风格的切换,比如SKinMagic这个皮肤库。这样的方式适合写库的人来玩,难度相对高,要对windows消息了如指掌。只是没关系 我会在兴许文章分析windows的全部控件的实现 以及消息处理 和自绘。
另外一种界面开发方式
基于DirectUI技术的界面,什么是DirectUI技术呢?我们知道在MFC中我们的软件界面都有句柄 ,句柄是一种系统资源。
可是基于DirectUI技术的界面组件是没有句柄的,我们须要自己封装大量的鼠标消息 等等取代默认windows控件的消息。
这么说吧 增加你要用DirectUI技术绘制一个Button 那么你就须要自己实现 比如系统Button的一些状态.比方鼠标点击 Hover UnHover Disable 时候 button的样子 以及消息的处理. 由于如今你不是在用windows默认的消息机制来实现界面。一切消息你自己封装。
DirectUI技术尽管是 无句柄绘制组件,可是 全部DirectUI界面必须有一个承载窗体作为 渲染窗体来使用,由于你画图须要设备上下文嘛。
市面上有非常多能够取代windows下繁琐的界面开发,兴许会专门解说怎样在以下编写界面
Qt的GUI 以及QML都能够高速的开发软件界面,可是有一个缺点是软件包可能会有些大,只是开发效率的确是高 这是本人的擅长之处后期会具体介绍QML开发跨平台界面UI
DUILIB 国内的界面库 比方金山 百度的一些产品中就用到了此库,除了有些小BUG之外 没啥太大的缺点 后期会在文章中介绍
Skin++一个收费的界面库,因为收费 技术不共享不适合我们学习使用 直接X掉
关于界面开发会遵循例如以下顺序进行:
1、 一步一步 学习 Win32 SDK 以及MFC中通过 自绘实现界面DIY 系列
1.1 自绘Buttonbutton
1.2 自绘Dialog
1.3 自绘菜单
1.4 自绘输入框
1.5 自绘ComboBox
1.6 自绘ListView
1.7 自绘Tab
1.8 自绘ScrollBar
1.9 通过HooK实现界面自绘
2、DirectUI方式 基于 GDI+开发 自己定义软件界面组件 系列
2.1 GDI+使用入门
2.2 GDI+ 实现DirectUI系列
3、Qt下的界面开发系列
· 4、DUILIB高速开发界面系列
以上是我列出的我想要去写的东西,写博文事实上非常枯燥无味,工作繁忙不能每天更新 可是至少保证每周更新两到三次博文,可能写的技术水平也不入大牛们的眼,可是对于新手来说 能帮助高速进入界面开发的门槛 那么就足够了。~
附上近期写的測试界面