使用Win32 Application
1. 引入 #include<wx/wx.h>
或<wx/wxprec.h>
當你的編譯器支援預處理器時,你可以使用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