1. 启动VS2008并建立一个空项目,暂时命名为wxMyFirst
2. 分别加入wxfirst.h 和wxfirst.cpp
3. 在.h文件中输入如下内容
//首先引入最基础的头文件 #include <wx/wx.h> //建立一个APP类,类似于MFC的CWinApp,每个应用程序都只有一个APP类 class MyApp : public wxApp { public: // 该函数等同于 _tmain(),不同的是返回true进入消息循环,返回false 应用程序退出 virtual bool OnInit(); }; // 定义我的主运行窗口,应该就是CWnd,但由于是主窗口,因此叫做frame class MyFrame : public wxFrame { public: // 传入窗口标题 MyFrame(const wxString& title); // 两个消息处理函数 void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); private: // 这个宏实际上向MyFrame类中加入了事件处理需要的字段和几个处理函数,感觉实现机制同MFC类似,就是用for代替switch进行消息路由 DECLARE_EVENT_TABLE() }; // 此处声明了一个外部函数 MyApp& GetApp(),该函数返回一个Hinstance // {return *static_cast< MyApp *>(wxApp::GetInstance());} DECLARE_APP(MyApp) // 此宏实际上就是winmain IMPLEMENT_APP(MyApp) |
其实仔细观察确实觉得wxwingets同MFC有几分相似
4. 在.Cpp中输入如下内容
#include "wxfirst.h" bool MyApp::OnInit() { // 建立主窗体 MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App")); // 显示主窗体 frame->Show(true); // 返回true表示可以进行消息循环,返回false直接退出框架 return true; } // 事件映射表,同MFC相似 BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) END_EVENT_TABLE() // About处理函数 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(); } //主窗口实现类” MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title) { //手工建立菜单条 wxMenu *fileMenu = new wxMenu; wxMenu *helpMenu = new wxMenu; //向菜单中加入menuitem helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"),wxT("Show about dialog")); fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"),wxT("Quit this program")); // 菜单加入菜单条. wxMenuBar *menuBar = new wxMenuBar(); menuBar->Append(fileMenu, wxT("&File")); menuBar->Append(helpMenu, wxT("&Help")); // 菜单条加入框架窗体, ---有点啰嗦,但对于编程实现菜单还是很方便的--- SetMenuBar(menuBar); // 建立状态条 CreateStatusBar(2); SetStatusText(wxT("Welcome to wxWidgets!")); } |
我们注意一下宏wxT() 他相当于_T()或L
5. 完成了程序输入后,现在开始进行编译环境的设置了:
5.1 首先建立一个配置,由于我编译时采用的unicode debug,因此我也需要建立这样一个配置 Universal Debug,并激活.
5.2 常规属性页中内容如下:
配置类型:应用程序
MFC的使用: 标准windows库
ATL使用: 不使用
字符集: 使用Unicode字符集
公共语言运行时支持:无
5.3 C/C++属性页修改的内容比较多
【常规页面】 首先需要在附加包含目录中加入wxwidgets的include目录
【调试信息格式】 /zi 程序数据库,经过等级 4级
【优化页面】 优化:禁用(/od)
【预处理器页面】 预处理器定义如下: WIN32 _DEBUG __WXMSW__ __WXUNIVERSAL__ _UNICODE __WXMICROWIN__ _WINDOWS NOPCH
【代码生成页面】
基本运行时检测: 两者 运行库: /MDd
5.4 连接器定义:该处虽然内容不多,但是作用很大
【常规页面】中设定启用增量连接,可以让编译快一些,然后设定附加库(.lib)文件的路径应指向:安装路径\lib\vc_lib.
【输入页面】中的附加依赖项加入下面几个库wxmswuniv29ud_core.lib wxbase29ud.lib comctl32.lib rpcrt4.lib,由于我使用了很小一部库的内容因此我只引用了很少的库,但要注意的是,由于我是从空项目开始,因此必须引入comctl32.lib rpcrt4.lib这两个,否则会出现找不到符号的错误,可能是Core这个库中应用了imagelist的原因吧.
【调试页面】生成调试信息项目选折是,
【系统页面】子系统选中windows
【高级页面】目标计算机项,选中MachineX86
5.5 编译运行。应该显示出如下wxwigets的第一个界面了。