proguru

posts(11) comments(62) trackbacks(0)
  • C++博客
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(11)

  •  C++(1)
  •  Design Patterns(1)
  •  GUI(6)
  •  Linux(1)
  •  Misc(2)
  •  Plugins architecture

随笔档案(11)

  • 2011年4月 (1)
  • 2011年3月 (1)
  • 2009年8月 (1)
  • 2009年7月 (2)
  • 2009年6月 (1)
  • 2009年1月 (1)
  • 2008年8月 (4)

搜索

  •  

最新评论

  • 1. re: 彻底放弃CN域名
  • 可是我的com,而且买国内空间,刚上线一下子。根本无敏感内容就被墙了。com也会被墙啊,汗。
  • --do1do2
  • 2. re: 彻底放弃CN域名
  • 哥一水的.net和.com, 哈哈
  • --打击装B犯
  • 3. re: 彻底放弃CN域名
  • 可是现在,当你访问慢的时候,被墙的时候,你会觉得不仅仅被鱼肉。。。
  • --溪流
  • 4. re: 彻底放弃CN域名
  • 楼主,这个可以不用发到首页吧。。
  • --Bill Hsu
  • 5. re: 轻量级开源C++ GUI开发框架KWinUI正式发布[未登录]
  • x64下的thunk代码还是有问题。
    普通thunk,非wndprocthunk。
    期待与你联系。

    我的QQ:1090833
  • --Loaden

阅读排行榜

评论排行榜

View Post

CPP博客首篇-兼论GUI轮子

    转载请注明出处:http://www.cppblog.com/proguru/archive/2008/08/24/59755.html

    一直以来都是一个C++的坚定支持者和努力实践者,尽管C++面临来自传统语言和动态语言的多方压力,但我仍然坚信C++有自己适用的领域和无可替代的地位。既然是C++的追随者,选择CPPBLOG来写点儿东西也就成了顺利成章的事情了。其实很久以前就考虑过在cppblog开博写点儿啥,但是一来没有文采,二来懒惰成性,这个想法就一直搁置了。最近偶然看到cexer同学的自己写的一个GUI框架的消息机制,突然就来了兴致,而且兴致颇高,因为我也是一个GUI轮子的制造者。因为一直感觉自己的GUI轮子(暂定名KWinGUI)成熟度太低,所以只是自己在用。“重复发明轮子”的论点我是不想反驳的,这个世界不可能只有一个轮子,而且我们需要更好的轮子,更性感的轮子("性感的轮子"语出cexer,呵呵),更适合自己的轮子。
    GUI Framework的确是个覆盖范围极广的领域,平台依赖性比较强。线程管理、内存管理、消息派发、callback、i18n、图形渲染、组件模型、甚至包括跨平台的考虑等等,而且现在看来一个GUI Framework没有可视化GUI设计器的话,是远不够完美的。界面和逻辑的充分解耦乃是GUI Framework的终极追求之一,用xml来描述界面也许是个不错的主意。
    C++的动态特性是比较薄弱的,比如RTTI、对象动态生成、对象序列化等等,而这些对于一个GUI Framework 来讲却是至关重要的,这需要付出更多的努力。尽管如此,C++仍然是最适合开发GUI的语言。
    GUI如此之庞杂以至于凭一人之力实在是有所力不从心,简直是在自虐。
    太笨重、丑陋的GUI框架不是我所喜欢的,所以我选择做自己轻量级的框架,虽然简单,却可以全局把握,运用自如。
    还有一个重要的关注点,那就是thread safe,特别在这个多核风行的年代,自始至终都应该高度关注,尽量不要用全局的、static的变量,时刻注意各种competition conditions。
    用C++来包装GUI,thunk是一个很好的trick,甚至是必须的,下一篇就来讲一下thunk。

posted on 2008-08-24 10:18 proguru 阅读(2035) 评论(13)  编辑 收藏 引用 所属分类: GUI

View Comments

# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
Welcome to the club!
研究“轮子功”的同志越来越多了哈。
不过我觉得 thunk 不是必须的哈。曾经用过 thunk,总是担心吊胆的怕它崩溃。因为它跟操作系统对内存代码的管理策略相关,有些操作系统在某些条件下可能会禁止提交可运行的内存块。仍然期待博主写出来哈!
2008-08-24 11:56 | cexer
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
GUI就用一个线程其实也不错。后台代码那是后台的事情。
2008-08-24 12:09 | 空明流转
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@空明流转
有时候多个 GUI 线程还是很有用处的。比如说,用多线程模拟多进程,能够节省很多资源。像 Explorer.exe。或者 Emeditor 的多文档。
2008-08-24 12:16 | cexer
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@cexer
thunk不是必须的,thunk有优点也有缺点,主要的缺点是严重依赖于系统平台,可移植性差。我现在在用thunk,代码很快会贴出。DEP保护是可以简单的绕过的,只要在可执行堆上分配thunk即可。不用thunk容易搞出一堆static的东西,不爽。
2008-08-24 12:20 | proguru
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
支持你 期待下一篇
2008-08-24 12:21 | foxtail
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@空明流转
GUI支持多线程是很有必要的,而且实现起来并不复杂,因为底层的SDK基本都是thread safe的。
2008-08-24 12:22 | proguru
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
KWinGUI的确还成熟度低,博主写的的确很有启发。
2008-08-24 15:15 | 戴尔笔记本
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
hao
2008-08-24 16:28 | 双色球
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
囧,前两个月我发了free script于是大家都做脚本,一个月前我发了gui,大家就开始gui了……
2008-08-24 20:30 | 陈梓瀚(vczh)
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@陈梓瀚(vczh)
呵呵,我做这个GUI至少是一年半以前的事情了...
2008-08-24 20:41 | proguru
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
其实我只是在说『发』,没说『做』。因为我很早以前也开始做GUI,第一个版本是opengl下给游戏开发的……
2008-08-25 01:31 | 陈梓瀚(vczh)
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@陈梓瀚(vczh)
你是抛砖引玉啊
:)
2008-08-25 09:40 | fly
# re: CPP博客首篇-兼论GUI轮子  回复  更多评论   
@陈梓瀚(vczh)
囧,前两个月我发了free script于是大家都做脚本,一个月前我发了gui,大家就开始gui了……

@陈梓瀚(vczh)同学确实有着“抛玉引玉”的作用。再接再历!
2008-08-25 12:00 | cexer
刷新评论列表

只有注册用户登录后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
  • 基于KWinUI的换肤框架KSkinX的一个简单Demo
  • KWinUI最新sample
  • 轻量级开源C++ GUI开发框架KWinUI正式发布
  • KWinGUI的一个DEMO
  • GUI之窗口过程thunk
  • CPP博客首篇-兼论GUI轮子
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Powered by:
C++博客
Copyright © proguru