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的第一个界面了。