wxwidgets用wxWidgets如何创建文件目录.

wxwidgets  时间:2021-07-23  阅读:()

如何CodeBlocks+wxWidgets+MinGW+STLPort

最近在做CodeBlocks+wxWidgets+MinGW的开发,编译时提示wcout出错,在网上搜索了一个,发现这是MinGW的一个limitation:不支持unicode。

网上提供的解决办法是用STLPort替代MinGW的STL库。

按照网上提供的步骤,从e下载源代码,编译,出错。

经过分析,发现网上很多文章都缺少了一些重要的步骤:安装MSYS。

下面是我的编译过程: 1. 下载STLPort源代码:/projects/stlport/。

假定解压目录为C:/STLPort 2. 下载并安装CodeBlocks和MinGW或带MinGW的CodeBlocks,假定MinGW安装路径为C:/CodeBlocks/MinGW。

不要忘记把C:/CodeBlocks/MinGW/bin加到Path环境变量里 3. 下载并安装MSYS:/wiki/msys 并设置MinGW的安装路径(这篇文章讲得很清楚) 4. 打开MSYS Shell环境,cd到/c/STLPort/build/lib(在MSYS里,Windows的C:一般映射到/c),执行mingw32-make .mak clean all install 5. mkdir C:/STLPort/lib 6. 复制C:/STLport/build/lib/obj/下面3个文件夹里的*.a和*.all到C:/STLPort/lib。

同时把3个dll复制到C:/Windows/system32 7. 下面是配置CodeBlocks的步骤: (1)打开CodeBlocks菜单Settings->Compiler and Debugger->Global Compiler Setting->GCC (2)检查并更新Toolchain executables中的MinGW安装路径(如果你用的不是CodeBlocks自带的MinGW) (3)在Compiler setting->Other options中添加-mthreads (4)在Linker setting中把C:/STLPort/lib里的3个*.a文件加入link libraries里,注意去年文件名前面的“lib”和后面的“.a” (5)在Search directories->Compiler里加入C:/STLPort/stlport (6)在Search directories->Linker里加入C:/STLPort/lib

MFC,WTL,WPF,wxWidgets,Qt,GTK 各有什么特点

WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得没法用了,比如 代码过于复杂,编译太慢,出错不好调试等问题难以解决。

而且封装得也不完全,还是随处可见 HWND HDC之类的东西。

用途主要是写一些很小的程序,或者作为其他UI框架的后端实现部分,比如我写过一个小框架用来做安装卸载程序,非常小,其中创建管理窗口部分是用WTL的。

MFC 是更高级点的Win API封装,比WTL封装彻底,很难见到HWND HDC了,也提供了不少实用工具类,比如高级控件,泛型容器,IO访问,网络协议等。

除此之外,还提供了一些基本框架,比如 Document/View,这就是个MVC的简化版本,只有MV,但是对于数据的管理,消息的传递等又没有什么约束,导致Doc/View被用得乱七八 糟。

尤其是对事件处理的模型,消息映射是功能简陋,而且容易出错的方式,唯一优点是性能好。

从VC++ 1.X就有MFC了,那时整个UI界的设计思想都比较落后(除了Apple),MFC又背负了沉重的兼容性包袱,比如vc++ 1.52的MFC程序到了vc2003稍加修改都可以编译,导致MFC后期没有什么发展,就是沿着老的思路完善了些细节,添加了些组件,但是根本性的设计 问题没有改进。

GTK,这个吃了语言的亏,用C写面向对象实在是痛苦,虽然在思想上比MFC要先进了些,但是写出来的代码比MFC要罗嗦很多了。

相比MFC,多了Layout的概念,事件处理上有了Signal/slot,虽然用起来很麻烦。

wxWidgets, 这个基本就是个跨平台的MFC,对各个平台的差异做了抽象,实际上后端大多还是用平台原生的API实现,好多控件都是直接用系统原生的。

有 wxWidgets for GTK+的版本,后端就是GTK+,wxWidgets就是一层壳。

这也是wxWidgets的优点,它编译出来的程序发行包比较小,性能也不错。

以上这些就是上世纪90年代的UI Framework技术水平了,至今它们也依然没有太多进步。

下面来谈谈21世纪的技术。

Qt, 虽然它也是上世纪90年代出现的,但是它在21世纪有了长足的进步。

应该说它的起点就比较高,一开始就定位跨平台,而且不满足于简单封装系统API,而是 要自己创造出一套完整的API和框架,甚至要代替系统API,所以不仅仅是做UI,而是涉及到了APP开发所用到的所有东西,包括网络,数据库,多媒体, 脚本引擎等。

signal/slot是Qt发明的,这是事件通知模型里C++语言的最佳实现了,甚至我都觉得这该写进C++标准,估计C++委员会的老顽 固们是从不写GUI的。

早期的QT也是没有DirectUI的概念的,每一个QWidget都对应一个原生窗口,从Qt4.4开始,只有顶层 QWidget才是原生窗口,而Child Widget是Alien Widget,只是个抽象的图层不对应原生窗口,这就实现了DirectUI的概念,很多图形效果也就变得可能了,比如窗口层叠透明效果。

在4.8后实现了QPA(Qt Platform Abstraction),这就使移植Qt变得很容易,目前Qt是支持平台最多的框架没有之一。

由于早期授权的问题,Qt对于开源社区不是很友好,导致推广不太顺利,直到它改成了LGPL方式,如果Qt能早点想开了,恐怕就没有wxWidgets的生存空间了。

Qt的缺点也是有的,就是太大,不过可以自己剪裁,我可以把QT库剪裁到发行包压缩后2.5MB。

WPF, 微软在Win Form的思路上走到死胡同后,终于痛下决心用正确的方法开发UI库了。

21世纪的UI一定是定义出来的,绝对不能是代码写出来的,所以有了XAML这个 强大的定义工具,不但可以定义UI布局,还包括图形动画效果,消息响应方式等。

配合C#这种优秀的语言,更是如虎添翼。

但是问题也很明显,就是过于庞大, 不仅开发时要用到庞大的IDE和设计工具,发行的安装包也十分巨大,所以目前还是很少有人拿他写通用软件客户端的,大多是做企业项目时写专用客户端。

大概4-5年前吧疼讯曾经用WPF写了个,但是只实现了基本功能就已经比C++客户端大好多了,而且运行缓慢,主要是太吃内存,而且那时WPF的优化还不充分。

最后我想补充下真正的UI库之王,cocoa。

Apple的成功有很多原因,其中之一就是cocoa,cocoa理念十分先进,而且出来得早,我都怀疑Qt和WPF有不少思想都是借鉴cocoa的。

定义式的UI,用xib就可以定义UI的绝大部分细节,而且提供所见即所得的可视化设计工具。

严格的MVC,而且定义非常清晰,分工明确。

signal/slot,虽然不叫这个名字,但思想就是,而且真的是拖动鼠标就能connect。

提供了ARC,闭包和反射,给UI开发带来巨大的便利性,当然这得益于Objective-C这个语言。

再补充下 Borland的OWL和VCL。

我是从Borland C++3.0和Delphi 1.0开始用的,那时的Borland看来很有前途的,可惜后来一系列决策失误导致现在这个公司几乎消失了,同学们不要再往这个坑里跳了。

OWL曾经和MFC是竞争对手,设计思想也差不多,个人感觉OWL的API设计更优雅一点,但是在市场上OWL被MFC彻底击败。

Delphi 是神作,它在RAD(快速应用开发)领域长时间没有对手,直到BS架构取代CS架构。

Delphi的特点就是简单、开发快,单纯就写个基本可用的应用来 说,可能至今都没有比他更快的,但是缺点就是丑,基本大多数Delphi应用都是一大堆控件堆积在一起,很不美观,另外由于Pascal语言的限制无法和 现有大量的C/C++代码融合。

虽然后来有C++ Builder,但是Builder里简单和快的优点也消失了。

Borland的C++编译器越做越差,导致后来开源项目都不太愿意兼容这个编译器了。

VCL准确地说不是UI库,而是一套组件接口规范,类似COM ActiveX。

delphi和C++builder都是基于这个规范构建了基础库。

UI库是个很大的话题,够写好几本书来探讨的,我这里就是随便写点自己的感受。

单纯讨论每个库的优劣是没有意义的,而是要放到具体的应用场景里来看,每个库都有自己擅长的场景。

如果仅在Windows下,追求程序小巧,用WTL,不足的地方自己实现去吧,但是视觉效果就呵呵了。

如果可以大一点,还要好看点,那就Qt。

如果完全不在乎大小,只要视觉效果华丽,就用WPF,如果把开发工具价格也考虑进来,那么土豪才会选WPF呢。

MFC就是个鸡肋了,除非你现有的工程师不会用别的,或者有历史遗留代码要保持兼容。

如果要求跨平台,那么就用Qt,wxWidgets和GTK+跟现在的Qt比起来没有什么优势了。

如果是iOS Android,那么最好用原生UI库,除非你写游戏。

用wxWidgets如何创建文件目录.

你看看这个是不是 wxMkdir(const wxString path); 示例: wxMkdir(wxString::FromUTF8("/home/me/new_dir"));

ShockHosting($4.99/月),东京机房 可享受五折优惠,下单赠送10美金

ShockHosting商家在前面文章中有介绍过几次。ShockHosting商家成立于2013年的美国主机商,目前主要提供虚拟主机、VPS主机、独立服务器和域名注册等综合IDC业务,现有美国洛杉矶、新泽西、芝加哥、达拉斯、荷兰阿姆斯特丹、英国和澳大利亚悉尼七大数据中心。这次有新增日本东京机房。而且同时有推出5折优惠促销,而且即刻使用支付宝下单的话还可获赠10美金的账户信用额度,折扣相比之前的常规...

HyperVMart:加拿大vps,2核/3G/25G NVMe/G口不限流量/季付$10.97,免费Windows系统

hypervmart怎么样?hypervmart是一家成立了很多年的英国主机商家,上一次分享他家还是在2年前,商家销售虚拟主机、独立服务器和VPS,VPS采用Hyper-V虚拟架构,这一点从他家的域名上也可以看出来。目前商家针对VPS有一个75折的优惠,而且VPS显示的地区为加拿大,但是商家提供的测速地址为荷兰和英国,他家的优势就是给到G口不限流量,硬盘为NVMe固态硬盘,这个配置用来跑跑数据非常...

速云:深圳独立服务器,新品上线,深港mpls免费体验,多重活动!

速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...

wxwidgets为你推荐
一秒钟变格格“hold住”到底是什么意思啊。。。水冷机箱多少钱水冷主机箱要多少钱 安装一个水冷主机箱 需要换硬件吗北漂论坛我自己想去北漂,你们谁有经验告诉告诉我。金山铁路最新时刻表金山北至上虞北高铁时间表慕课网址慕课官网的电话多少?魔兽世界密保卡WOW现在的密保卡怎么弄?500人同时怎么将微信群升级成500人湖北健康码转码申请坐火车途经疫区健康码会变吗?软件测试工程师待遇现在IT行业的软件测试工程师怎么样,待遇怎么样?杀戮空间联机杀戮空间怎样联机
国外vps租用 网站域名备案 个人域名备案流程 a5域名交易 smartvps enzu siteground 安云加速器 mach wdcp 512au 贵州电信宽带测速 info域名 好玩的桌面 typecho 丹弗 100x100头像 php空间申请 创梦 1g内存 更多