KWinUI sample 1: Hello World
可能没有比Hello World更适合做第一个sample了。
下面就是KWinUI的Hello World程序。
Read more…
可能没有比Hello World更适合做第一个sample了。
下面就是KWinUI的Hello World程序。
Read more…
windows平台上的GUI框架已经有很多了,为什么还会有KWinUI?
答案就是轻量,高效,线程安全,并且可以完全掌控。
比较各种GUI Framework的优劣是没有太多意义的,存在的东西都有它存在的合理性和适用的范围。从来没有能满足所有需求的东西,C++亦如是,虽然它是如此的强大。KWinUI来源自开发实践,是做一个项目过程中产生的。对于一个界面并不算复杂的小项目来说,那些重量级的framework太过沉重了,而每次用SDK来写界面,显然又过于繁琐了,所以有了KWinUI。KWinUI使用C++来包装windows SDK,并没有使用太复杂的技术,太复杂的我也不会:),主要使用了thunk技术和C++模板的静多态特性,并且仔细考虑了线程安全,毕竟在这个多核的时代,如果不是线程安全的就显得不那么in。
跨平台不是KWinUI的诉求,现在不是、将来也不是,现在就有很多十分优秀的跨平台GUI开发框架,比如VCF,wxWidget,gtk+,QT等。KWinUI更像是一个自娱自乐的产物,只是觉得它可能对其他一些人也有用处,所有采用lgpl协议将它公布于众,如果能对其他人有些微的帮助,那么开放它的目的就达到了。采用lgpl的好处就是你可以放心的使用KWinUI,就是在商业程序中使用也没有问题。但是如果你对KWinUI做了更好的修改,最好公布一下修改的代码,以便给其他人以帮助。就算KWinUI真的没啥价值,这样发布应该也不会对别人造成什么伤害,权当娱乐一回吧,呵呵。
KWinUI的主要特性如下:
轻量、高效、资源占用少、线程安全、使用简单,差不多就这些了。
KWinUI因为使用了模板技术,所以就是一堆头文件和几个cpp文件,使用起来相当简单,后面我会继续发几个简单的sample来演示如何使用KWinUI。
如果非要有一个版本号的话,那么就定为 0.1.0吧,因为KWinUI实在是挺稚嫩的。
如果有人对KWinUI有兴趣,欢迎对它进行进一步的修改。
KWinUI的全部源程序从此下载,很小的,我保证你瞬间就能下载下来:)
thunk是什么?查字典只能让人一头雾水。thunk是一段插入程序中实现特定功能的二进制代码,这个定义是我下的,对不对各位看官请自己斟酌,呵呵。
我这里要讲的是窗口回调专用thunk,thunk的核心是调用栈动态修改技术。地球人都知道,windows的窗口回调函数是一个全局函数,类成员函数 是不可以作为窗口回调函数的,因为它有this指针,这给我们用C++来包装窗口带来不小的麻烦。你说什么?用一个全局函数或类的静态成员函数来做窗口回 调函数?这肯定没问题。但是这样带来的麻烦也许比你想象的要多,想想我们的GUI Framework不会只有一个类,而是一个类层级结构,会有许许多许多、形形色色的widget,每个都是一个窗口。对象与窗口之间的映射可能就是个不 小的问题,像MFC那样搞?太落伍了吧!用thunk就要简单的多。WTL用了thunk,但是不够彻底。
废话少说,先贴出thunk核心代码。
Copyleft © 2009-2010 mopyman 本站为原创网站,除非另有声明,本网站采用知识共享“署名2.5 中国大陆”许可协议授权.