wxWidgets 是跨平台的基于GTK+的C++ 开源库。有点类似于windows平台的MFC。支持Windows,OSX,Linux和Unix的32位和64位结构。同时还支持一些移动平台如 windows mobile, iPhone SDK和嵌入式GTK+。如果对C++不熟,wxWidgets库同时还支持python,perl,Ruby和其他的语言的封装。WxWidgets生 成的程序,会让程序外观和本地平台一样。
下面介绍VS2010中集成wxWidgets。
1-下载wxWidgets 2.9.3
2-用vs2010编译
wxWidgets安装目录下的\build\msw文件夹,里面有
wx.dsw
wx_dll.dsw
wx_vc7.sln
wx_vc8.sln
wx_vc9.sln
用VS2010打开,并并使用VC++2010编译。
新建 win32空项目,然后添加 HelloWorldApp.h 和 HelloWorldApp.cpp
3- 包含目录:
在 项目属性->配置属性->C/C++->常规->附加包含目录 中添加:
C:\wxWidgets-2.9.3\include
C:\wxWidgets-2.9.3\lib\vc_lib\mswu
4-静态编译:
在 项目属性->配置属性->C/C++->代码生成->运行库:多线程调试 DLL (/MDd)
5-在 项目属性->配置属性->MFC的使用: 使用标准 Windows 库
6.添加链接包含目录:
在 项目属性->配置属性->链接器->常规->附加库目录 中添加:
C:\wxWidgets-2.9.3\lib\vc_lib
7-添加连接文件
在 项目属性->配置属性->链接器->输入->附加依赖项 中添加:
Release:
wxbase29u.lib
wxbase29u_net.lib
wxbase29u_xml.lib
wxexpat.lib
wxjpeg.lib
wxmsw29u_adv.lib
wxmsw29u_aui.lib
wxmsw29u_core.lib
wxmsw29u_gl.lib
wxmsw29u_html.lib
wxmsw29u_media.lib
wxmsw29u_propgrid.lib
wxmsw29u_qa.lib
wxmsw29u_ribbon.lib
wxmsw29u_richtext.lib
wxmsw29u_stc.lib
wxmsw29u_xrc.lib
wxpng.lib
wxregexu.lib
wxscintilla.lib
wxtiff.lib
wxzlib.lib
comctl32.lib
rpcrt4.lib
Debug:
wxbase29ud_net.lib
wxmsw29ud_html.lib
wxbase29ud_xml.lib
wxmsw29ud_adv.lib
wxmsw29ud_aui.lib
wxmsw29ud_gl.lib
wxmsw29ud_media.lib
wxmsw29ud_propgrid.lib
wxmsw29ud_qa.lib
wxmsw29ud_ribbon.lib
wxmsw29ud_richtext.lib
wxmsw29ud_stc.lib
wxmsw29ud_xrc.lib
wxscintillad.lib
wxmsw29ud_core.lib
wxbase29ud.lib
wxtiffd.lib
wxjpegd.lib
wxpngd.lib
wxzlibd.lib
wxexpatd.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib
odbc32.lib
8.仅Debug,在 项目属性->配置属性->C/C++->预处理器->预处理器定义 中添加:
;__WXMSW__;__WXDEBUG__
9-OK
每个wxWindow程序都要有一个继承自wxApp的对象。每个程序都要用OnInit()方法来实例化,你可以在这创建主窗口。例 1.4 是 HelloWorldApp的定义:
Example 1.4. HelloWorldApp.h - The HelloWorldApp definition
#ifndef INCLUDED_HELLOWORLDAPP_H
#define INCLUDED_HELLOWORLDAPP_H
/** * HelloWorldApp类 * 这个类显示一个状态栏中包含文本"Hello World"的窗口 */
class HelloWorldApp : public wxApp
{
public: virtual bool OnInit();
};
DECLARE_APP(HelloWorldApp)
#endif // INCLUDED_HELLOWORLDAPP_H
对于主窗口我们使用wxFrame类。这个类提供了一个可以调整大小与位置的窗口。它有粗的边框与一个标题栏。另外你可以让它有一个菜单栏、工具栏、状态栏。例 1.5 是HelloWorldApp的实现.
例1.5. HelloWorldApp.cpp - HelloWorldApp的实现
//对支持预编译编译器要包含"wx/wx.h"
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "HelloWorldApp.h"
IMPLEMENT_APP(HelloWorldApp)
/* 程序从这里开始执行,类似非wxWindows程序中的main() */
bool HelloWorldApp::OnInit()
{
wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
frame->Show(TRUE);
SetTopWindow(frame);
return true;
}