近来无事想写一个小程序,又不想花太多时间在UI上;就想起了一直关注的wxWidgets(以前叫wxWindows,据说是因为微软施压才改的名)。选用他的理由有三:

  1. 只会C。。。
  2. 不想因为界面设计而花太多时间
  3. wxWidgets已经有了像wxGlade这样的东东,画个简单的界面什么的足够了
  4. 我的服务器已经都转换到了Linux;而桌面电脑随着时间的推移已经逐步的将常用的程序切换成了跨Windows/Linux的版本。所以学习一个跨平台的UI比较能够做到知识的保值
  5. wxWidgets中的wxString类提供了统一的一个字符串操作界面。一些常用的文本处理函数不用再创建了;这个我喜欢
  6. 开源、免费!

下一步就是选择IDE

主要焦点在MinGW Developer StudioCode::Blocks Studio这两个跨平台(都使用的是wxWidgetsUI库)的免费软件之间:

  1. MinGW Developer Studio使用感觉还不错。有预编译的wxWidgets库;入门方便(编译wxWidgets库遇到的问题多多,后面慢慢讲)
  2. Code::Blocks Studio提供插件接口而且最重要的是更新快。这方面MinGW Developer Studio就差多了,活跃的开发团队是开源项目发展的关键!

当然差别还有很多。我是菜菜鸟看得到的就这些。。。

安装Code::Blocks Studio

Code::Blocks Studio现在发布的是RC2(还没有正式版)。但RC2问题多多(我发现的就有对Unicode编译的支持问题);不过有Nightly Builds可以解决。我的解决步骤是:

  1. 先下载并安装RC2整合MingW的版本,这样也就不用再去下载MingW(MingW下载包太多了,安装头痛)
  2. 下载Nightly Builds (现在登陆C::B这个论坛要注册,前几天都还可以匿名的)中的 Unicode wxWidget动态支持库(新版的C::B已经使用Unicodede发布)
  3. 将两个包中文文件解压覆盖到 C:Program FilesCodeBlocks

安装wxWdigets

  1. 我在wxWidgets官方下载页面上下载的wxMSW v2.6.2 的ZIP版
  2. 解到D:\(安装完成后的路径为:D:wxWidgets-2.6.2,之后的设置都用的是这个路径)

编译wxWdigets(支持ODBC)

  1. 首先编辑D:wxWidgets-2.6.2includewxmswsetup.h以便编译后的动/静态库文件支持ODBC(为了让编译出来的库支持ODBC,我至少编译了4次才找到原来还要在这儿修改。虽然wxWidgets的手册上写要修改setup.h不过没有具体说是那个目录下的。。。吐血)。修改内容如下:
  2. 将文件中的#define wxUSE_ODBC 0修改为#define wxUSE_ODBC 1
  3. 然后我在D:wxWidgets-2.6.2buildmsw下创建了一个envset.bat文件来设置编译需要的环境参数。内容如下
set PATH=%PATH%;C:\Program Files\CodeBlocks\bin;C:\Program Files\CodeBlocks\mingw32\bin;set LIBRARY_PATH=C:\Program Files\CodeBlocks\libset C_INCLUDE_PATH=C:\Program Files\CodeBlocks\includeset CPLUS_INCLUDE_PATH=C:\Program Files\CodeBlocks\include;D:\wxWidgets-2.6.2\include;D:\wxWidgets-2.6.2\contrib\include;
其中C:Program FilesCodeBlocks是我的C::B的安装路径
  1. 同时修改D:wxWidgets-2.6.2buildmswconfig.gcc

    USE_ODBC = 0修改为USE_ODBC = 1

  2. 进入DOS命令行

  3. 切换工作路径至 D:wxWidgets-2.6.2buildmsw

  4. 运行envset.net

  5. 执行清理命令

mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1 clean
其中
  1. SHARED=1表示生成的动态链接库DLL,0就是静态链接库
  2. MONOLITHIC=1表示生成单一的库文件,0表示生成多个按模块分割的库文件
  3. BUILD=debug表示生成带Debug信息的版本方便调试,release是发布版
  4. UNICODE=1表示使用unicode编码
  1. 执行编译命令
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1 VENDOR=cb
  1. 看看电视,泡壶茶。编译的时间可不短;-)

整合C::B和wxWidgets

  1. 运行C::B。程序会提示你填写wxWidgets的安装目录
  2. codeblock-wx-global-var-set.png
  3. 然后使用新建向导创建一个Using UNICODE wxWidgets DLL的wxWidgets Appliction就可以开始了
  4. codeblock-wx-create-project.png

有点晚了,关于C::B中的wxWidgets项目配置方面的改天再写。。。