wxWidgets开始编程
先推荐一下这两天找到的学习材料。
博客中有一个系列教程,貌似作者没有写完。见《跟我学wxWidgets开发》系列教程。
要看书。就《使用wxWidgets进行跨平台程序开发》。
我给的链接中。包含中书中的源代码。这本书,是《Cross Platform GUI Programming With wxWidget》的中译本。译本中没有附录部分,我看了英文版的,可读性还不错。
通过浏览书,发现了前文中说过的问题。
看书、实践交叉着来。学习效率自然高。
wxWidget自带的文档也是非常好的參考资料。满世界找不到參考的时候,不要忘记现成的“权威”一手资料。
在线手冊在http://docs.wxwidgets.org/3.0/。从http://www.wxwidgets.org/downloads/可下面载文档离线看,有html、chm两种格式。
还有,下载来的demo和sample,当中都是好案例。怎样用。后文中要讲。
最全的资料。在wxWiki——http://wiki.wxwidgets.org/Main_Page。还有官网的在线教程http://www.wxwidgets.org/docs/tutorials/。再次感受开源的力量。
前文通过编译wxWidgets2.8.7。搞清楚了主要的“路数”。看了推出几个月的3.0.0版,看给出的改进不少,决定卸载昨天做的工作。再来一遍。
放弃wxPack还是有些不甘。
想着我的大一学生,在他们自己的本本上,假设安装wxPack就能用,那该是更好的事。他们首先要体验的,是用wxWidgets做出程序来。而不是在编译wxWidgets中遇上一堆问题,然后就没有然后了。
用最新的wxPack,安装了wxWidgets2.8.12,观察库文件。确实该有的都有了。
用Code::Blocks12.11中wxWidgets2.8.x向导做出两个測试的程序。却都在执行时发生了内存溢出的问题。
分析原因,应该是GCC版本号问题。wxPack安装的wxWidgets2.8.12是用GCC4.4.1编译的,而我的CodeBlocks12.11中用GCC4.7.1,溢出不意外。
这一点。有网友给出评论,“不用wxpack是对的,wxPack is no longer recommended for use, as it is built with a much older version of GCC.”
下载、编译wxWidgets3.0.0,已经不是什么问题(见前文)。仅仅编译了用于生成Debug目标文件版本号库文件。
可是用Code::Blocks在编出程序时。却出了问题。
先在Code::Blocks中建立wxWidgets Project,用向导整出个程序来玩,这是刚開始能做的事。可是。Code::Blocks12.11中,最高版本号仅仅能建立wxWidgets2.8.x版的应用,编译时。总找不到libwxmsw28ud.a等文件。难怪,这里仅仅有libwxmsw30ud.a。该在Code::Blocks中可以改动设置,不想找了。
建立,wxWidgets3.0.0中的应用,成了须要做的事情。
实际上,要执行书中和网络中找到的案例,不能靠向导。
为介绍建立过程,我用《使用wxWidgets进行跨平台程序开发》中第2章的案例。过程是这种(建议至少浏览过第2章后再试。请先去下载书和源代码):
建一个空项目,如图1:
图1
我建的项目,名称为minimal。将项目上的源文件minimal.cpp复制到项目所在目录中,在codeBlocks中项目名上点右键。选Add file...将这个文件增加项目。
文件mondrian.xpm是图标文件。也一并拷贝过去(不做,后面也须要补上)。另外,在文件minimal.cpp上点右键,选properties...,在对话框中将文件的仅仅读属性去掉。增加源文件后的界面如图2所看到的: 图2
假设这时编译。会有一堆错误。首先面对的问题,编译时找不到须要的头文件。
选菜单setting->Global variables...,保证配置相似图3(依据你安装wxWidgets的目录):
图3
选菜单Project->Build options...。在选项卡Search directories中,设置Compiler,如图4所看到的:
图4
这时再编译,将不再有语法错误,但一大堆问题,来自于连接环节。问题是找不到库文件。
选菜单Project->Build options...,在选项卡Linker settings中,增加X:\wxWidgets-3.0.0\lib\gcc_dll目录中的全部.a文件,如图5所看到的:
图5
然后再编译。成功!
可是执行程序时,会出现错误,如图6:
图6
按提示来,在X:\wxWidgets-3.0.0\lib\gcc_dll中找到那wxmsw30ud_gcc_custom.dll文件,将其复制到项目所在目录,看到了期盼的窗体。如图7所看到的。
图7
出现图6的错误。原因是我在Linker settings增加的是lib\gcc_dll目录中的.a文件。这些属于“动态链接库”(这个术语自己百度去吧)。
这种方式的优点在于编译速度快。目标代码小,可是在编译好的程序执行时,必须要能找到须要的.dll文件。最简单的办法,就是拷贝.dll文件。
先这样做起来,越学越多,知识就这样积累起来了。
================= 迂者 贺利坚 CSDN博客专栏================= |
wxWidgets开始编程的更多相关文章
- CodeBlocks 3 使用设置
使用MingW作为CB的默认编译器和wxWidgets进行编程,当然需要好好配置一番,因为mingw在windows下用起来着实没有win32原生态程序运行快,也没有他小,好处是借助wxwidgets ...
- zwx_helper
通过重载c++operator,实现一种轻松的wxWidgets界面编程风格,如html编写页面一样直观容易. 举一例,一个界面页有四块区,如果是开发html的话,是从头到脚一气书写 <div ...
- wxWidgets编程起步
開始学习wxWidgets,上一篇写了"安装wxWidgets遭遇的两大关卡"(简称"前文"). 先推荐一下这两天找到的学习材料. 博客中有一个系列教程,貌似作 ...
- python 网络编程
一.网络知识的一些介绍 socket是网络连接端点.例如当你的Web浏览器请求www.pythontik.com上的主页时,你的Web浏览器创建一个socket并命令它去连接www.pythontik ...
- [wxWidgets] 2. 重访“Hello World” 程序
这是四年多来在博客园的第二篇博客.有了上一次的排版使用经验,这一篇文章应该有些进步(^_^). 闲话按下不表,言归正传.在编译.成功运行了上一个helloWorld.cpp(后文中'hw'简称hell ...
- [ZETCODE]wxWidgets教程六:事件处理
本教程原文链接:http://zetcode.com/gui/wxwidgets/events/ 翻译:瓶哥 日期:2013年12月7号星期六 邮箱:414236069@qq.com 主页:http: ...
- [ZETCODE]wxWidgets教程一:介紹
本教程原文链接:http://zetcode.com/gui/wxwidgets/introduction/ 翻译:瓶哥 日期:2013年11月26日星期二 邮箱: 414236069@qq.com ...
- 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)
初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...
- 不建议用wxWidgets,底层有过多的bug
不建议用wxWidgets, 搞了wxWidgets 3年,不是所说的那么容易跨平台,很多bug,不稳定, 莫名其妙的崩溃找源代码修改编译真是费时费力. 开发速度真没有使用本地sdk开发高, 很难定制 ...
随机推荐
- 剪枝法观点下的旅行商问题(TSP)
1. 构建基本的穷举搜索骨架 int n; int dst[100][100]; int best; const int INF = 987654321; // 初始状态下,path 存入第一节点,v ...
- 【55.70%】【codeforces 557A】Ilya and Diplomas
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- jquery插件课程1 幻灯片、城市选择、日期时间选择、拖放、方向拖动插件
jquery插件课程1 幻灯片.城市选择.日期时间选择.拖放.方向拖动插件 一.总结 一句话总结:都是jquery插件,都还比较小,参数(配置参数.数据)一般都是通过json传递. 1.插件配置数据 ...
- windows cmd 查看文件目录树
windows + R ⇒ 输入 cmd ⇒ 进入 windows 命令行界面: tree/?:命令提示: tree:不输入任何参数,输出一棵目录树 不显示文件,只显示目录: tree/F:递归显示目 ...
- 新版itunes添加铃声
iTunes 铃声制作-图文教程 ① 点选设备iPhone - 勾选手动管理音乐和视频 - 点击应用 注意:因本操作涉及iPhone内音乐和视频,请操作前先对音乐和视频进行相关备份,以免同步后被刷掉造 ...
- IOC功能以及相关的配置
功能: 控制反转,将对象的创建权反转给Spring可以解决程序耦合性高的问题,大概的意思就是将程序运行时所需要的资源.数据,全部让Spring供给,防止程序与程序之间联系过高,而出现耦合性高的问题. ...
- jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强)
jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强) 一.总结 一句话总结:多看参考文档,多看主干目录.一般的功能分两个方法来实现,一个对应标签,一个对应标签和事情,比如克隆 ...
- CoreData使用方法二:NSFetchedResultsController实例操作与解说
学习了NSFetchedResultsController.才深深的体会到coredata的牛逼之处.原来Apple公司弄个新技术.不是平白无故的去弄,会给代码执行到来非常大的优点.coredata不 ...
- 【codeforces 750F】New Year and Finding Roots
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Tor (洋葱头)torbrowser
Tor是什么 Tor是互联网上用于保护您隐私最有力的工具之一,但是时至今日仍有许多人往往认为Tor是一个终端加密工具.事实上,Tor是用来匿名浏览网页和邮件发送(并非是邮件内容加密)的.今天,我们要讨 ...