不建议用wxWidgets,底层有过多的bug
不建议用wxWidgets, 搞了wxWidgets 3年,不是所说的那么容易跨平台,很多bug,不稳定, 莫名其妙的崩溃找源代码修改编译真是费时费力. 开发速度真没有使用本地sdk开发高, 很难定制复杂的控件和界面. 定制了复杂的控件后崩溃发现它的基础的类库有bug, 后悔浪费那3年时间.
http://bbs.csdn.net/topics/391817496?page=6
想问一下你当时用的wxWidgets是什么版本。
我现在用的是 wxWidgets 3.0.2,开发工具用的是 Visual Studio 2015。
没感觉到什么明显的 Bug,挺稳定的。可能是我用的还没有像您那样深入?难道等我用得比较深入了也会遇到您所说的那些坑?这也是说不准的事呢。
不过目前来说,wxWidgets 是我最好的选择,我是指兼顾开发效率与团队作战的情况下。
直接用本地SDK开发的话。。。如果是我一个人的项目我肯定这么干,但团队作战我目前还是觉得用 wxWidgets 比用Windows SDK 要好。
跨平台的事,我目前可以不做跨平台,但长远的打算是要的。用 wxWidgets 本身就是为了使将来跨平台成为可能。没指望到时候一点也不折腾,只要技术上可行就好。
我们公司做界面,通常是用的 OpenGL 方案,有一个我们自己内部的类库,底层是 OpenGL,靠OpenGL来画出各种各样的控件,包括做出各种事件响应什么的。他们这么做是有一定道理的,因为要跨平台,跨的不是Windows和Linux这样的平台,而是跨PC与嵌入式(比如VxWorks)这样的平台。
因为公司那个OpenGL类库比较难用,所以我自己的实验性项目选择了 wxWidgets。
http://bbs.csdn.net/topics/391817496?page=8
1. 用了3.0.2,它实现了自己的一套消息机制,这种消息机制不稳定(也是类似封装消息转发自定义消息那种),嵌套的层次太多,很多系统消息都获取不到. 比如设备插入拔出(可能我不会?),不容易扩展消息.
2. 有时候崩溃点在它的消息处理部分,根本没办法改.
3. 每次升级费老大功夫,编译wx也很费时间.
4. 曾经wxString内部崩溃,这可麻烦大了.
5. 里面也是到处充满宏,没比MFC好多少,比较好的是可以动态绑定处理函数.只要控制了WTL的PreTranslateMessage一样可以自由改.wx可没有类似WTL的那种PreTranslateMessage自定义消息转发!
6. 编译wx也经常编译不过,还限制了编译器的版本.
7. wx里面的代码其实并不好.
真的,我奉劝你不要用wx了,如果想用跨平台就用qt, 它比wx稳定,不过也遇到QString曾经崩溃过.之后再也不想用第3方的ui实现了. 稳定的还是官方自己的std::string或NSString.
qt的坏处就是限制在这个平台上, 不能随意使用系统特性,比如Mac下的原生ui和qt不一样, 也就是qt不能实现某种效果, 这种第3方的永远都落后于平台自己的.
我从2.8.0-2.9.2 开始用到3.0.2 ,之后换WTL和Cocoa. 它的标准控件看样子很强大, 但是不稳定和性能很低, MFC或WTL的OWNERDRAW一样可以很容易实现,而且很多例子学习不是问题.相比之下wx用的人太少,基本都是只能自己去研究,没的参考还浪费很多时间,悲剧的是它还是一个第3方库, win32编程完全用不到它. 它实现的那些文件,流,Socket,wxURL功能很弱,还不如直接用win32 api或者用boost,zlib等独立第3方库.
好的也就只有wxImage和它的控件了.
不建议用wxWidgets,底层有过多的bug的更多相关文章
- 为什么不建议在 HBase 中使用过多的列族
我们知道,一张 HBase 表包含一个或多个列族.HBase 的官方文档中关于 HBase 表的列族的个数有两处描述: A typical schema has between 1 and 3 col ...
- 为什么不建议在hbase中使用过多的列簇
我们知道,hbase表可以设置一个至多个列簇(column families),但是为什么说越少的列簇越好呢? 官网原文: HBase currently does not do well with ...
- 改善python程序的建议[转]
<编写高质量代码 改善Python程序的91个建议> <编写高质量代码 改善Python程序的91个建议>读后程序学习小结 - BigDeng_2014的专栏 - CSDN博客 ...
- android:布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!
1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...
- Android为TV端助力 布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!
1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...
- 精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换
本文是精讲RestTemplate第2篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 RestTemplate只是对其他的HTTP客 ...
- wxWidgets源码分析(9) - wxString
目录 wxString wxString的中文字符支持 Windows Linux Unicode Linux UTF-8 总结 wxString与通用字符串的转换 wxString对象的创建 将wx ...
- wxWidgets源码分析(4) - 消息处理过程
目录 消息处理过程 消息如何到达wxWidgets Win32消息与wxWidgets消息的转换 菜单消息处理 消息处理链(基于wxEvtHandler) 消息处理链(基于wxWindow) 总结 消 ...
- 电容式触摸控制器PCB布局
在目前市场上可提供的PCB(印刷电路板)基材中,FR4是最常用的一种.FR4是一种玻璃纤维增强型环氧树脂层压板,PCB可以是单层或多层. 在触摸模块的尺寸受限的情况下,使用单层PCB不是总能行得通的, ...
随机推荐
- linux使用mount挂载iso文件
mount -t iso9660 -o loop /home/user/XXX.iso /mnt/iso
- unity3D基础学习 通过判断鼠标点击的是否是目标物体,物体旋转,滑动滚轮缩放拉近视角
贴代码: 摄像机的拉近视角代码: public Transform target; public float minFov = 15f; public float maxFov = 7 ...
- SVN经常使用命令说明
SVN版本号:1.5 及更新版本号 名词说明: WC:Working Copy 你的工作区 Versioned:受控的:受版本号控制的 SVN是什么? SVN是开源的版本号控制系统. 比CVS很多其它 ...
- 《C专家编程》第一天
1.2 C语言的早期体验 1)C语言的基本数据类型直接与底层硬件相对应.C语言不存在内置的复数类型.C语言一开始不支持浮点类型,直到硬件系统能够直接支持浮点数之后才增加了对它的支持. 2)auto关键 ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- chrome Provisional headers are shown错误提示
1.一般出现这个错误是请求没有发送成功 可能原因:在上传文件或ajax上传时指定的timeout,过时时间小 其他资料: http://www.duanzhihe.com/575.html http: ...
- 如何完全卸载SQL Server 2005
用过SQL Server 2005的朋友都应该知道,不管是安装还是完全卸载都是件很头疼的事情. 下面跟大家分享一下如何完全卸载SQL Server 2005(手动卸载步骤哦~~). 一.停止sql的服 ...
- congos 日期控件的简单使用
congos 添加html的标签,然后写上js的代码,这段代码的功能是得到前一天的日期. <input type="button" value="查询" ...
- DWZ简介及其使用
来源:http://blog.csdn.net/t123012009065/article/details/8286826 DWZ简介: DWZ富客户端框架(jQuery RIA framewor ...
- C++拾遗(五)语句相关
前缀格式与后缀格式 对于表达式:后缀如 i++ 表达式的值仍是 i,在遇到下一个顺序点后再将 i 加1.前缀 ++i 表达式的值就是(i+1),先计算表达式的值,不需要等待 顺序点. 对于类:前缀函数 ...