不建议用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和它的控件了.