当前位置: 首页 > 图文教程 > 开发语言 > VC++ > VC++6.0 下搭建 wxWidgets 开发环境

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++6.0 下搭建 wxWidgets 开发环境


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 81 ::
收藏到网摘: n/a

VC++6.0 下搭建 wxWidgets 开发环境
 GTK、QT、SWT、SWING 一样,wxWidgets 也是一种开源跨平台的 GUI 框架。
因 wxWidgets 和 MFC 有些渊源,有些亲近,故要体验一番 wxWidgets。
现在最新版是 2.8.8。wxWidgets 程序还可运行于 Windows CE、Palm OS。
不但包括 GUI,还有 Media、Socket、ODBC 等库。

详情请见 wxWidgets 的官方网站是:http://www.wxwidgets.org

本篇介绍 VC++6.0 下如何搭建 wxWidgets 的开发环境,包括编译 wxWidgets 源码和配置 VC 环境。
所用 wxWidgets 的版本是 2.8.8。

第一步:下载并安装 wxWidgets
在 http://www.wxwidgets.org/downloads/ 下载到 wxWidgets 源码。
你可以下载 Windows 安装版 http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.8-Setup.exe (11.9M)
或者是 Zip 压缩版 http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.8.8.zip (15.9M)

假如我们下载的是 wxMSW-2.8.8-Setup.exe,就可运行它,
过程中我们假定选择的安装目录是C:\Program Files\wxWidgets-2.8.8。
完成后,我们看到安装目录所在空间的大不是 127M。

第二步:编译 wxWidgets

编译方式有两种,
一种是用 nmake 在命令行下编译。
一种是在 VC++ 中打开 wx.dsw 进行编译,
1) nmake 编译
运行 cmd.exe 来到命令行下,进入到目录 d:\wxWidgets-2.8.8,然后执行

D:\wxWidgets-2.8.8>nmake -f makefile.vc
默认是编译成 DEBUG 版的静态库。
如果你想生成动态库,或生成的是 Release 版的,你可以修改 D:\wxWidgets-2.8.8\build\msw\config.vc 文件。
打开该文件你能看到可以更改的选项,其中重要的几个如下:
# What type of library to build? [0,1] -- 生成库的类型,0为静态库,1为动态库
SHARED = 0
# Compile Unicode build of wxWidgets? [0,1] -- 是否使和 UNICODE,0 否,1 是
UNICODE = 0
# Type of compiled binaries [debug,release] -- 是 debug 还是 release
BUILD = debug

其中还有许多顾名思义的选项,请根据需求修改。

对于 config.vc 中的选项也可以通过命令行覆盖掉配置文件中的值,如编译命令用

D:\wxWidgets-2.8.8>nmake -f makefile.vc SHARED=1 UNICODE=1 BUILD=release

就是编译 release 版,支持 UNICODE 的动态库了。

动态库和静态库的不同体现在使用上,静态库中的代码能编译进应用程序的 exe 文件中,这个 exe 文件可单独发布,但体积较庞大。
动态库可让 exe 文件执行时加载,虽然 exe 文件体积小了,但发布时必须带着相应的动态库文件。

2) VC 编译
还 可用 VC++ 打开 D:\wxWidgets-2.8.8\build\msw\wx.dsw,然后选择 Build->Batch Build... ,
我们看到每个工程都有 16 个配置,请根据应用需求勾选你的配置,
如所有工程的 Win32 Release 和 Win32 Debug 版本,然后 Build,如果你照单全收,编译将非常耗时而占空间。
这种编译方式就是可以一下操作帮你编译出所有需要的版本。

好, 等等编译完之后,在目录 D:\wxWidgets-2.8.8\lib\ 会有产生一个目录:vc_lib 是静态库的目录,默认编译有 17 个静态。
如果是编译成动态库则会产生目录 vc_dll。
在 vc_lib 中有 mswd 目录,release 版对应的是 msw,里面含有 Debug 和 Release 版的 setup.h。

注意到 Debug 版和 Release 以及和 UNICODE 、动态库、静态库组合条件编译生成的文件和目录名。
静态库编译到 D:\wxWidgets-2.8.8\lib\vc_lib 目录中
动态库编译到 D:\wxWidgets-2.8.8\lib\vc_dll 目录中
文件命名为 wxmsw28d_core.lib 文件为例:
wxmsw28_core.lib         ---- Release,非 UNICODE  版
wxmsw28d_core.lib       ---- Debug,非 UNICODE  版
wxmsw28u_core.lib       ---- Release,UNICODE  版
wxmsw28ud_core.lib     ---- Debug,UNICODE  版
对于 dll 文件的命名规范也一样的。
在 vc_lib 和 vc_dll 下如果全编译了会有四个目录,msw、mswd、mswu、mswud 意义同上。
编译完后可以把那些过程中的目标文件删了,它们占的空间实在是太大。
要是你还想以后重新编译用就留着吧。
第三步:测试VC++6.0是否能编译 wxWidgets sample project
3.1为VC++6.0添加wxWidgets的LIB和INCLUDE 文件路径
项目配置 Additional Include Directories 和 Additional library path。
并且在下面前两个 Include Files 放在全局设置里也较合适。
进到 VC++ 的 Tools->Options->Directories,选择 "Include Files" 后,添加
D:\wxWidgets-2.8.8\include
D:\wxWidgets-2.8.8\contrib\include
D:\wxWidgets-2.8.8\lib\vc_lib\mswd

对应于 Project Settings -> C/C++ Tab->Preprocessor 中的 Additional include directories

再选择 "Libraries Files",添加
D:\wxWidgets-2.8.8\vc_lib

3.2编译并运行minimal.dsw程序
open workspace :C:\Program Files\wxWidgets-2.8.8\samples\minimal\ minimal.dsw
编译OK并运行,就说明配置正常!

第四步:创建Win32 Application wxWidgets 项目wxHello

创建一个 Win32 Application 的空项目,项目名为 wxHello
Proejct->Settings (Alt+F7) 进入项目设置
1. C/C++选项卡->Code Generation -> use run-time library 设置为: Debug MutilThread DLL
2. C/C++选项卡-> PreProcessor -> PreProcessor Definitions
设置加上 __WXMSW__,__WXDEBUG__ ,如果是 Release 版,则只需加上 __WXMSW__。
3. C/C++选项卡-> PreProcessor -> Additional include directories
设置为 D:\wxWidgets-2.8.8\include,D:\wxWidgets-2.8.8\include\lib\vc_lib\mswd,  这是设置附加 Include 路径。
4. Link 选项卡-> Input -> Object/library modules
设置加上 wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib
这些 Lib(没有这四个 lib comctl32.lib rpcrt4.lib winmm.lib wsock32.lib 的话请加上,关键是前两个)。
如果要使用 wxODBC 就加上wxbase28d_odbc.lib。
5. Link 选项卡-> Input -> Addtional library path 设置为: D:\wxWidgets-2.8.8\lib\vc_lib。

注意:编译成不同版的执行代码应填入相应的 Additional include directories 和 Addtional library path。
编译成依赖 DLL 的执行文件还需要加上预处理指令 WXUSINGDLL
用UNICODE 编译则需要加上预处理指令 _UNICODE
还有一种 Universal 编译,要加上预处理指令 __WXUNIVERSAL__

这样一个普通的WxWdigets项目就设置好了.

我们测试 WxWidgets 自带的例子 minimal。新建一个 minimal.cpp 文件,
内容同 D:\wxWidgets-2.8.8\samples\minimal\minimal.cpp,编译,不出意外,成功了!

Release 静态库版(vc_msw) minimal.exe 1.11M,可单独发布
Debug  静态库版(vc_mswd) minimal.exe 2.52M,可单独发布
Release 动态库版(vc_mswdll)   minimal.exe 68K,
加上wxmsw28_core_vc_custom.dll (2.85M) 和 wxbase28_vc_custom.dll (1.11M),共 4M
Debug 动态库版(vc_mswddll)  minimal.exe 96K,
加上wxmsw28d_core_vc_custom.dll (4.26M) 和 wxbase28d_vc_custom.dll (1.82M),共 6.1M

这是一个简单的 wxWidgets 程序,只用到了两个动态库的情况。
在用到 wxWidgets 库较少时用静态库来编译发布文件会小一些,若是用到组件多的时候,可能用动态库方便些,请酌情决定。