在VC6中创建wxWidgets项目
原创:liigo
前言:wxWidgets 是跨平台的GUI库,用VC6会影响它的跨平台性吗?当然不会,我们只是用VC6充当编译器和编辑器,只要编写代码时注意不使用Windows相关的特性,写出的代码仍然是跨平台的,仍然是可以在其它操作系统下(如Linux)使用其它C++编译器(如GCC)编译并运行的。
为什么用VC6,而不是其它?我并没有说一定要用VC6,或只能用VC6,只不过此文专门针对VC6而已。过一段时间我可能会写一篇在Code::Blocks中使用wxWidgets的文章(可惜在Code::Blocks中创建wxWidgets工程太容易了,还有必要介绍吗?我只感觉到在linux下编译Code::Blocks本身的源代码有一些困难)。
关于wxWidgets
完整地介绍 wxWidgets 或全部列出其所有功能,是很困难的事情。我也不打算这么做。我只列一下我目前所知道的、能想起来的且比较在意的一些 wxWidgets 特性。
- C++开发的跨平台的GUI库,开放源代码(类LGPL,允许在商业程序中使用)
- 有十多年的历史,目前已经相当成熟、稳定
- 支持多个平台(Windows/Windows CE,Linux,Unix/GTK+,Unix/Motif and X11,Mac OS,MGL,OS/2,Palm等)
- 如果有可能,它总是采用操作系统本地界面(这一点与 Eclipse SWT 类似,当然SWT是Java的)
- 有众多高质量的第三方组件/库
- 可以在多种编程语言中使用wxWidgets,如C/C++,Java,Python,Perl,Basic,javascript,Lua,Euphoria,Squeak等
- 除了GUI部分,还涉及文件系统,多线程,网络,多媒体,数据库访问等多个领域
- 支持UNICODE,支持国际化(Internationalization)编程
- 提供日志,调试,配置等实用功能
- ……
创建项目
点击菜单:File -> New... 创建一个“Win32 Application” Project,项目名称为“wXProject”,点击OK按钮,
在下一步的提示中选择“An Empty Project”,点击Finish按钮完成项目的创建。
以下的设置和操作可能有一些繁琐,但这是一劳永逸的事情。只要你完成了第一个空白工程,以后再需要创建工程时复制一份就可以了。
设置项目属性
以下四个编译配置并不要求都必须设置好,如果您不打算使用Unicode,那么不用设置“Win32 Unicode Debug”和“Win32 Unicode Release”,如果您仅仅想调试程序而非发布,则只需设置相应的“Debug”不用设置“Release”。最简单的情况下,只需设置“Win32 Debug”。
还有一点要注意,您需要事先编译出相应版本的 wxWidgets 库文件。如“Win32 Unicode Debug”需要 Unicode+Debug 版本的 wxWidgets 库。(wxWidgets 各种版本库均可通过 <wx安装目录>\build\msw\wx.dsw 进行编译)。
点击菜单:Project -> Settings... 打开项目属性设置对话框。
Win32 Debug:
C/C++ General:
Preprocessor definitions: WIN32,_DEBUG,__WXMSW__,__WXDEBUG__,_MBCS,_WINDOWS,NOPCH
C/C++ Code Generation:
Use run-time library: Debug Multithreaded DLL
Link General:
Object/library modules: wxmsw26d_xrc.lib wxmsw26d_Html.lib wxmsw26d_adv.lib wxmsw26d_core.lib wxbase26d_XML.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib
Win32 Release:
C/C++ General:
Preprocessor definitions: WIN32,NDEBUG,__WXMSW__,_MBCS,_WINDOWS,NOPCH
C/C++ Code Generation:
Use run-time library: Multithreaded DLL
Link General:
Object/library modules: wxmsw26_xrc.lib wxmsw26_html.lib wxmsw26_adv.lib wxmsw26_core.lib wxbase26_xml.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib
进行以下操作之前,请先通过菜单 Build -> Configurations... 增加两个编译配置“Win32 Unicode Debug”和“Win32 Unicode Release”(分别复制于“Win32 Debug”和“Win32 Release”)。
Win32 Unicode Debug:
C/C++ General:
Preprocessor definitions: WIN32,_DEBUG,__WXMSW__,__WXDEBUG__,_UNICODE,_WINDOWS,NOPCH
C/C++ Code Generation:
Use run-time library: Debug Multithreaded DLL
Link General:
Object/library modules: wxmsw26ud_xrc.lib wxmsw26ud_html.lib wxmsw26ud_adv.lib wxmsw26ud_core.lib wxbase26ud_xml.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib
Win32 Unicode Release:
C/C++ General:
Preprocessor definitions: WIN32,NDEBUG,__WXMSW__,_UNICODE,_WINDOWS,NOPCH
C/C++ Code Generation:
Use run-time library: Multithreaded DLL
Link General:
Object/library modules: wxmsw26u_xrc.lib wxmsw26u_html.lib wxmsw26u_adv.lib wxmsw26u_core.lib wxbase26u_xml.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib
设置wxWidgets目录
在前面的设置中,指定了wxWidgets的库文件(*.lib),但VC可能并不知道到哪个目录去寻找这些文件。同时,我们的源代码中也要包含(include)wxWidgets的头文件,其头文件所在目录也需要指定。另外,为了更好的调试wx程序,最好把wxWidgets的源代码所在目录也设置好。
点击菜单 Tools -> Options...,进入 Directories 页,分别加入以下路径(下面的<wx>表示wxWidgets安装目录)
Include files:
<wx>\include
<wx>\include\msvc
Library files:
<wx>\lib\vc_lib
Source files:
<wx>\src
这一设置是针对VC全局的,以后再用VC创建wxWigets程序,就不用设置这些路径了。
创建wxWidgets预编译头文件
各个编译器不同,有的支持预编译头文件,有的不支持,支持预编译头文件的,使用的语法也有所不同,如果在每个源文件中都重复的写未免不爽,还是集中到一个头文件中来比较好。但是注意,有了此文件并不决定或限制你使用还是不使用预编译头文件,用不用以及怎么用还是在你。
点击菜单 File -> New...,新建一个C/C++头文件 wx_pch.h,其内容如下: #ifndef WX_PCH_H_INCLUDED
上一篇:A Summary of Principles for User-Interface Design.
下一篇:给年轻工程师的十大忠告
|