不建议用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不是总能行得通的, ...
随机推荐
- SQL - 添加外键
不解释: ---先创建外键的column ALTER TABLE tblLicenses ADD ProductID int not null; ---添加外键 ALTER TABLE tblLice ...
- web前端面试试题总结---javascript篇
JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...
- UITabBarController 标签栏控制器
接上篇导航控制器UINavigationController 接下来是UITabBarController 标签栏控制器 先来看一下UITabBarController的结构 从图上可以看出控制器分为 ...
- Android学习中R文件中途消失
新建工程的时候R文件明明是在的,结果等我做着做着,R.java不见了????于是我就上网查了查,发现,诶,大家都说的几种常见情况都试过了,1.对工程clean一下,选project->clean ...
- 菜鸟学习 - Unity中的热更新 - LuaInterface用户指南
[由于学习,所以翻译!] 1.介绍 LuaInterface 是 Lua 语言和 Microsoft.NET 平台公共语言运行时 (CLR) 之间的集成库. 非常多语言已经有面向 CLR 编译器和 C ...
- Facebook的手游出海之道
对于不同的游戏公司,面临的同一个问题就是怎样让海外玩家能够一眼在App中发现你,成为你的新用户:不仅如此,怎样留住这些用户,让他们成为你游戏的忠实玩家也是让全部游戏开发商困扰的一个问题. w=580& ...
- MSSQL row_number简单使用语法
MSSQL row_number简单使用语法 select * from ( select row_number() over(partition by threadid order by date ...
- Fragment 事务 回退栈
一些相关API 1.Fragment常用的三个类: android.app.Fragment 定义android.app.FragmentManager 用于在Activity中操作Fragmenta ...
- 程序员必备英语.net版(.net菜鸟的成长之路-零基础到精通)
通过一段时间的.NET学习,我发现英文不好是我的软肋~我觉得好好补习一下英文单词水平.可是要背哪些单词呢? 经过一段时间的整理,终于整理出来了一套比较完整的.NET程序员必备单词文档.单词加详细说明. ...
- Windbg简单介绍
1.1 使用帮助 Windbg中的命令分为三种:基本命令.元命令和扩展命令.基本命令和元命令都是调试器自带的,元命令以" ."开头. 扩展命令是外部加入的,以"!&quo ...