【软件介绍】
GUI 经典名库wxWidgets对于按键事件的处理,和同类产品相比,有个小的、但很折磨人的不同之处:如果焦点位于某个控件(子窗体)之上,那么当时发生的 wxKeyEvent事件只发给那个子窗体,而主窗体拦截不到,也无法处理,这在一些时候带来了很大麻烦。我坚信这个功能决不是因为没有必要而被 wxWidgets刻意取消的,这不是“你应该修改程序逻辑”的问题,因为从前用过的VB和Delphi都提供了这种功能,就是主窗体有一个 KeyPreview属性,设置为真之后,主窗体本身就可以先一步得到任何控件上的按键事件,进行处理。如果安装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中的应用,成了需要做的事情。实际上,要运行书中和网络中找到的案例,不能靠向导。

![Wxpack 2.8.12.1 官方版[网盘资源]](/up/1407/201471895424.jpg)
![Wxpack 2.8.12.1 官方版[网盘资源]图1](/up/1407/201471895434875970.png)
![Wxpack 2.8.12.1 官方版[网盘资源]图2](/up/1407/201471895435875970.jpg)
![Wxpack 2.8.12.1 官方版[网盘资源]图3](/up/1407/201471895435552640.jpg)



























