最近对跨平台编程比较感兴趣,同学向我推荐了wxWidgets。但是这个框架配置起来还是挺麻烦的,现把相关步骤写下来,以免日后忘记,同时也可以和大家共勉。
编程环境:系统 WinXP,开发工具 VS2005,wxWidgets 2.8.7
一、下载
从官方网站http://www.wxwidgets.org下载wxWidgets开发包,目前最新版本是2.8.7,下载后解压到文件夹中。
二、编译
进入wxWidgets-2.8.7/build/msw文件夹中,打开wx.dsw,可以用vc6进行编译,也可以装换为vs2005格式进行编译,可以选择用debug模式还是release模式进行编译,最好各个模式都编译一次。编辑成功后将在lib/vc_lib文件夹中添加msw或mswd等文件夹(分别对应release或debug编译模式)。
三、VS2005的配置
工具-》选项-》项目和解决方案-》VC++目录-》包含文件
添加包含目录:wxWidgets-2.8.7/include/msvc和wxWidgets-2.8.7/include
工具-》选项-》项目和解决方案-》VC++目录-》库文件
添加包含目录:wxWidgets-2.8.7/lib/vc_lib和wxWidgets-2.8.7/lib
四、新工程的建立
打开vs2005,新建一个C++的空项目工程。新建一个CPP文件。添加以下代码(示例工程):
class MyApp: public wxApp
... {
public:
virtual bool OnInit();
} ;
class MyFrame: public wxFrame
... {
public:
MyFrame(const wxString &title);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
private:
DECLARE_EVENT_TABLE()
} ;
DECLARE_APP(MyApp)
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
... {
MyFrame *frame=new MyFrame(wxT("SinoGIS"));
frame->Show(true);
return true;
}
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
EVT_MENU(wxID_ABOUT,MyFrame::OnAbout)
EVT_MENU(wxID_EXIT,MyFrame::OnQuit)
END_EVENT_TABLE()
void MyFrame::OnAbout(wxCommandEvent & event )
... {
wxString msg;
msg.Printf(wxT("Hello and welcome to %s"),
wxVERSION_STRING);
wxMessageBox(msg,wxT("About Minimal"),
wxOK|wxICON_INFORMATION,this);
}
void MyFrame::OnQuit(wxCommandEvent & event )
... {
Close();
}
#include " mondrian.xpm "
MyFrame::MyFrame( const wxString & title):wxFrame(NULL,wxID_ANY,title)
... {
SetIcon(wxIcon(mondrian_xpm));
wxMenu *fileMenu=new wxMenu;
wxMenu *helpMenu=new wxMenu;
helpMenu->Append(wxID_ABOUT,wxT("关于(&A)... F1"),wxT("显示关于对话框"));
fileMenu->Append(wxID_EXIT,wxT("退出(&X) Alt-X"),wxT("退出程序"));
wxMenuBar *menuBar=new wxMenuBar();
menuBar->Append(fileMenu,wxT("文件(&F)"));
menuBar->Append(helpMenu,wxT("帮助(&H)"));
SetMenuBar(menuBar);
CreateStatusBar(2);
SetStatusText(wxT("欢迎学习WxWidget!"));
}
五、工程的配置
项目属性-》配置属性-》C/c++-》代码生成
运行时库:多线程调试DLL(/MDd)
点击运行按钮,编译成功,OK。