wxWidgets学习2--框架解释[转载]

使用Win32 Application 1. 引入 #include 或 当你的编译器支持预处理器时,你可以使用wxprec头文件。当它不支持时,你应该包含wx.h,它包含了所有必须的wxWindows头文件。你同样也可以为每一个控件分别包含相对应的头文件。 #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif 2. 新建两个类: class xxxApp : public wxApp class xxxFrame : public wxFrame 3. 添加宏 class xxxApp定义后添加 DECLARE_APP(xxxApp) class xxxApp实现后添加 IMPLEMENT_APP(xxxApp) 宏 DECLARE_APP 和 IMPLEMENT_APP 为我们作下列操作: 当平台需要时,它创建一个 main() 或者 WinMain() 方法。 它建立一个全局方法 wxGetApp(). 你能够使用这个函数去得到一个程序对象的引用: wxGetApp() 使用方法 HelloWorldApp &app = (HelloWorldApp&) wxGetApp(); 也可说创建全局变量:wxTheApp // 通过在class xxxApp定义后添加DECLARE_APP(xxxApp),你就可以调用wxGetApp()返回 类xxxApp的对象。不使用DECLARE_APP也可以调用全局变量wxTheApp。 4. 重载 wxApp 的 virtual bool OnInit()函数,实例化Frame、显示、设置位置 { //建立 xxFrame *frame=new xxFrame(NULL,-1,_T("hello")); frame->Centre(); //显示 frame->Show(); SetTopWindow(frame); return true; //TRUE表示初始化成功 } //下一步系统就调用 wxApp 的wxApp::OnRun()开始消息循环 顶级窗口不同于子窗口,他在创建后必须显式调用显示函数。如:frames 和 dialogs 也可以使用调用wxFrame的default constructor,然后调用create()来解决 5. 在Frame的构造函数中,添加属于Frame的Menu、status bar; 每一个菜单都需要一个独立的ID。这是通过一个枚举类型来完成的。而不能使用#define定义的常量(比如:#define MENU_FILE_MENU 1)因为这不能保证你有独一无二的ID。它十分容易漏掉一些值并且当你想插入新的ID时这会变的十分难以维护。 wxMenubar wxMenu wxMenu::Append(ID,"显示字符"); wxMenuBar::Append(&wxMenu); wxFrame::SetMenuBar(&wxMenuBar); 6. Command消息响应, 1>处理消息的类定义添加: DECLARE_EVENT_TABLE() 2>定义消息处理函数,不得是virtual、带消息相关参数、返回值是 void: void func(wxCommandEvent& event); 3>定义 Menu Command ID,可采用const 或 enum enum { ID_CLOSE=1,ID_FILE_OPEN=2 }; 如果ID的值为 -1,指定的任何事件都将激活与之相连的处理函数,因而你可以为所有菜单命令或所有命令按钮仅加一条处理函数。 4>实现COMMAND消息影射: BEGIN_EVENT_TABLE(xxFrame,基类) EVT_MENU(ID_CLOSE,HWFrame::OnClose) END_EVENT_TABLE() 7.wxFrame的Close(bool force = false) wxWindow::Closebool Close(bool force = false) This function simply generates a wxCloseEvent whose handler usually tries to close the window. It doesn't close the window itself, however. Parameters force:false if the window's close handler should be able to veto the destruction of this window, true if it cannot. 附录: 1._T()、wxT()同 MFC 。 2.大部分程序会重载wxApp中与OnInit()对应的OnExit()来释放资源: int WxDBApp::OnExit() { return wxApp::OnExit(); } 此函数只在OnInit()返回true时调用。 3.SetIcon(GetIconResource(wxT("../MyWx/wfx.ico"))); xpm

你可能感兴趣的:(wxWidgets学习2--框架解释[转载])