MyException - 我的异常网
当前位置:我的异常网» C++ » 想写一个GUI库,欢迎一起来写或是提些建议。解决办法

想写一个GUI库,欢迎一起来写或是提些建议。解决办法

www.MyException.Cn  网友分享于:2013-03-18  浏览:13次
想写一个GUI库,欢迎一起来写或是提些建议。
想写一个GUI库,欢迎一起来写或是提些建议。
原因是: 
1. 我能找到的GUI库都不怎么好用,没怎么用C++的GP,对成员指针等不怎么应用。
  可能是过于考虑移植性了。 我想做的,为了我看着舒服,甚至可以只用GCC 4.5支持的特性。
2. 长得都一样,按钮都是圆角矫形,用鼠标一点都只是变凹下去,没有哪个点一下冒一阵烟雾的。
3. 都太局限,不能方便的做动画。用了opengl,也不能和其它界面元素整合。
初步想法:

1. signals
  回调有用继承多态实现的,就独立设计的触发注册的。
  继承多态实现的反映很快,不过过于耦合。 
  触发注册实现的,要么用起来觉得很不舒服,要么就是极慢(比如某库用boost实现)

  我想做的是库内部组件消息传递走继承方式,用户界面是触发注册。
  比如:
  //先定义一个普通函数和一个成员函数
  void message( const char* msg){
  std::cout << "msg=" << msg << std::endl;
  }
  class T{
  void message( const char* msg){
  std::cout << "msg=" << msg << std::endl;
  }};

  
  T t;
  //定义一个参数为const char*,返回值为void的信号
  signal<void(const char*)> msg;
  //注册触发
  msg.connect( &message);
  //注册触发
  msg.connect( &t, &T::message);
  //发射信号
  msg.emit( "hello world");

2. drawing
  所有组件不使用系统原有的,自己绘制。 准备使用cairo。
  也就是说,只要求系统生成一个空白窗体,之后在里面绘制自己想要的组件。
  这样达到了一种较好的控制,甚至是实现flash一样的效果。
  参考FLTK
3. events.
  用一个主窗体接收事件,窗体内部的组件都自己实现事件处理与分发。
  只有这部分是平台相关,不过这一部分占的比例不大。
  参考FLTK
4. 风格
  采用VCL的设计风格,不是用set,get来设置或是取得成员,而是重载运算符。
  比如:

  //一个窗体
  class Window{
  public:
  _int (width); //宽 (_int是一个宏,实现上很有意思的)
  _int (height); //高
  protected:
  //设置宽的函数。 没有设置高的函数,于是高只读。
  void $set_width( int var){
  if ( var >200 && var < 800){
  //宽己改变,重绘。
  }
  }
  };

  这样:
  Window w;
  w.height = 200; //编译挫败,height不可以设置。
  w.width = 300; //在200,800之间,可以设置。








------解决方案--------------------
挺好的,想实现成什么样子呢?
------解决方案--------------------
up 
mark
------解决方案--------------------
关注 顶
------解决方案--------------------
关注下
------解决方案--------------------
支持
------解决方案--------------------
这个太偏图像处理了,祝楼主顺利!
------解决方案--------------------
你看看minigui 那些吧,这个事开源的,估计你可以借鉴一些,
不过就是这个是主要考虑在轻量级的系统上使用的
如果你想搞图形处理
现在也有开源的OpenGL函数库的 ,估计你也可以参考一下

------解决方案--------------------
支持LZ
我等LZ的库做界面:-)

------解决方案--------------------
mark
------解决方案--------------------
开源的跨平台GUI库,大名鼎鼎的wxWidgets(www.wxwidgets.org/),所有的事件处理都用到了成员指针,摈弃了MFC丑陋的函数签名封装,将MFC数十种不同的消息函数签名统一封装到不同的Event里,极大的美化了消息映射的处理机制.(MFC的AFX_MSGMAP_ENTRY丑陋的成员和函数签名映射在软件工程的标准看来完全就是枚举所有情况的硬编码);对用GP,楼主可以看看Notus这个库(http://notus.sourceforge.net/),肯定让你直呼过瘾,什么design by concepts啊,meta programming啊,眼花缭乱.
------解决方案--------------------
支持,建立一个开源库吧
------解决方案--------------------
wxWidgets i like it

文章评论

看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
漫画:程序员的工作
漫画:程序员的工作
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
编程语言是女人
编程语言是女人
我的丈夫是个程序员
我的丈夫是个程序员
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
Java程序员必看电影
Java程序员必看电影
每天工作4小时的程序员
每天工作4小时的程序员
程序员的鄙视链
程序员的鄙视链
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员和编码员之间的区别
程序员和编码员之间的区别
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
旅行,写作,编程
旅行,写作,编程
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
那些争议最大的编程观点
那些争议最大的编程观点
为什么程序员都是夜猫子
为什么程序员都是夜猫子
中美印日四国程序员比较
中美印日四国程序员比较
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
总结2014中国互联网十大段子
总结2014中国互联网十大段子
鲜为人知的编程真相
鲜为人知的编程真相
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
代码女神横空出世
代码女神横空出世
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员必看的十大电影
程序员必看的十大电影
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
一个程序员的时间管理
一个程序员的时间管理
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员都该阅读的书
程序员都该阅读的书
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
我是如何打败拖延症的
我是如何打败拖延症的
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有