WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library

转载必须注明原文转自C++博客(cppblog),作者毕达哥拉斯半圆,谢谢合作。

写这个文章的目的,是希望得到更多人的帮助、指导、提供建议,甚至合作。我想自己开发一个Windows上的C++GUI,我取名叫做WarmGUI,因为CoolGUI.com已经被人注册了,我想那我就叫Warm吧 ^_^

我会用MFC开发简单的Windows应用,我的兴趣在服务器端并且喜欢稍微系统底层一些的工作,做了较长时间之后。现在的工作需要我开发一个客户端应用,但是现在,我发现桌面世界变了,我总结了一些主要原因,不一定正确,而且,这也不是我的重点,只是阐述我的目的和动因,请批评指正。

1. Apple公司的个人产品更加注重个性化合视感(look & fell),尽管不是新话题,在GoF的设计模式中,已经论述过MVC以及look & fell,那么在GoF之前这个话题必然已经存在一段时间了。但是乔布斯帮主在这个方向做到了极致,各种i产品不断冲击桌面,移动,掌上各种终端,导致所有的厂商不得不跟上Apple公司的脚步。

2. 为了获得"漂亮"的视觉效果,iOS, Android, linux等产品以OpenGL为主要渲染工具做界面开发,而微软公司与之抗衡的工具是DirectX,并且在近些年的发展中DirectX大有超过OpenGL的势头,至少在某些宣传中是这样。当然这两技术必然将长期共存很长时间。

3. 微软为了跟上时代潮流,从Win7开始,系统内置DirectX11客户运行库,用户无需单独安装。而WPF开始取代MFC做为主流的桌面产品,WPF的子集Silverlight也作为网页前端开发工具,在IE9中提供特殊视觉效果。

至此,我认为开发UI应用的人必须:
1. 学习和掌握DirectX/OpenGL至少两者之一
2. 学习和掌握WPF以及Net4以上

但是对我个人而言,我学习WPF但是拒绝使用WPF,原因如下:
1. WPF是一个新的框架,只要是框架就会被限制在里面,mfc那冰冷呆板的样子就是一个例子(这也给Apple可乘之机)。wpf不过是用新的冰冷呆板的框架取代了旧的冰冷呆板的框架。

2. 据说WPF的效率不佳,并且WPF的视觉效果,是对Direct3D, Direct2D等的封装,如果想玩的好,还是得从DX玩学起。

3. 我非常厌恶 C# + .Net 组合,拒绝使用任何C#和.Net,我喜欢效率,喜欢赤裸裸的虐待系统,不喜欢隔着衣服玩女人。我强烈的要求使用C++/C做开发,我不知道是否有人跟我一样,还是这只是我的个人偏好。

综合以上原因,我下载了CEGUI, MyGUI, 这两个C++UI框架的主要应用时游戏,当然了,OpenGL/DirectX神马的最早就是应用在游戏上的,他们已经做的比较完善,比较强大了。但是我运行了他们的Demo之后,却对效率界面效果不是很满意而且有错误,看来需要读他们的源代码,并且修改。

既然如此,我想我可以开发一个自己的框架,反正我要学习的东西那么多(Dx,OGL, WPF, CEGUI, MyGUI...),边学边干呗。既然要学习,就学的高兴一点,玩得嗨一点。

目前我的设想如下:
1. 作为通用的界面基础,在此之上构建商业软件,游戏等等;
2. 轻量级的类库,不像MFC那样对一切进行封装,允许大量使用Windowd API,只做必要的封装;
3. 保持灵活度和扩展性;
4. 采用Direct2D, Direct3D做渲染;
5. 后期做一个可视化的IDE,嵌入VisualStudio中,做窗口布局,自动生成代码等。

看来我要做的工作还真不少,下一节,我开始把我做的一些工作总结写出来,还要请大家不吝赐教啊!学生这里先谢过啦~

珍爱生命,努力编程!!

posted on 2012-08-30 16:40 毕达哥拉斯半圆 阅读(2484) 评论(17)  编辑 收藏 引用

评论

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 17:26 right

根据我这么多年的经验,该库能够完成的概率为0%~  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 19:24 毕达哥拉斯半圆

@right
谢谢鼓励,哈哈,说说看,为什么呢?  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 19:33 LongSing

你可以參考tcl/tk
還有FLTK  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 19:57 毕达哥拉斯半圆

@LongSing
好的,这就去看,谢谢!  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 20:19 Richard Wei

支持一下,不过即使有D3D和WPF的经验,做这个东西也不是容易的事  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 20:49 Pear

一是有没有那么长久的时间精力,二是能不能当成习惯来做,连半神vczh的Gac都还没完成呢  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 21:14 毕达哥拉斯半圆

@Pear
您说的很有道理,不着急,慢慢弄吧,先做个小级别的。  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 21:15 毕达哥拉斯半圆

@Richard Wei
谢谢支持!确实很难,慢慢弄吧  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 21:18 毕达哥拉斯半圆

@Pear
谢谢提供Gac的信息,我刚知道有这个lib,我好好学学!  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:03 万连文

根据我目前掌握的,可以研究一下chromium的views框架以及未来某个时间推出的aura(已经用于chrome os)。实现思想上(概念、对象模型)可以借鉴wpf,缺点就是没有源码参考。我自己在盘views/aura + windowless richedit + windowless webview(chromium 内核),工作量巨大,还好可以占用工作时间折腾。

FLTK 我5-6年前看过,太轻以至于在那个年代做最简陋的嵌入式UI都觉得不够好,尽管如此也值得一看。  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:16 fzy

感觉你要折腾好几次的。
最好和一个商业项目绑定在一起做。
一开始用手写的数据来驱动,
编辑器可以后面写。

不要依赖特定的渲染  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:42 fzy

和商业项目绑定,快速的迭代开发,才是最好的方式。
研究形式的开发,根本出不来的。
  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:46 陈梓瀚(vczh)

@fzy
不要小看业余生活丰富的蛋疼程序员的力量  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:47 毕达哥拉斯半圆

@fzy
多谢指教!确实与商业项目绑定,目前做开发的只有我一个人,折腾了一个多月了,哈哈。  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-08-30 23:49 毕达哥拉斯半圆

@万连文
多谢指点!就去看~  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-09-03 22:16 过还漂

思路很好,困难不少,但不是别人说的那样不可能完成,说实话,我现在正搞一个类似的东西,只能利用业余时间搞  回复  更多评论   

# re: WarmGUI(0. 序言) 构建自己的C++ Windows UI Class Library 2012-09-03 22:27 毕达哥拉斯半圆

@过还漂
哈哈,好啊,一起加油吧!还请多多指点!  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(3)

随笔档案

相册

contact

搜索

最新评论

阅读排行榜

评论排行榜