wxWidgets随笔(4)-hello,world
生活随笔
收集整理的這篇文章主要介紹了
wxWidgets随笔(4)-hello,world
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wxApp::OnInit()在啟動時調用,應該用于初始化程序,可能會顯示“閃屏”并創建主窗口(或多個)??蚣軕摰玫揭粋€標題欄文本(“Hello World”)和一個位置和啟動大小。一個框架也可以被聲明為頂部窗口。返回true表示初始化成功。
bool MyApp::OnInit() {MyFrame *frame = new MyFrame( "Hello World", wxPoint(50, 50), wxSize(450, 340) );frame->Show( true );return true; }在主窗口(或以后)的構造函數中,我們創建了一個菜單,其中包含菜單項和主窗口底部顯示的狀態欄。兩者都必須與各自調用的框架相關聯。
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame(NULL, wxID_ANY, title, pos, size) {wxMenu *menuFile = new wxMenu;menuFile->Append(ID_Hello, "&Hello...\tCtrl-H","Help string shown in status bar for this menu item");menuFile->AppendSeparator();menuFile->Append(wxID_EXIT);wxMenu *menuHelp = new wxMenu;menuHelp->Append(wxID_ABOUT);wxMenuBar *menuBar = new wxMenuBar;menuBar->Append( menuFile, "&File" );menuBar->Append( menuHelp, "&Help" );SetMenuBar( menuBar );CreateStatusBar();SetStatusText( "Welcome to wxWidgets!" ); }請注意,我們不需要為標準菜單項wxID_ABOUT和wxID_EXIT指定標簽,它們將被賦予標準(甚至是正確翻譯的)標簽,以及針對當前平臺的標準加速器,使您的程序行為更加本機化。因此,如果可能的話,您應該選擇重用標準的id。
以下是標準的事件處理程序實現。OnExit()通過調用Close()關閉主窗口。參數true表示其他窗口沒有否決權,比如在詢問“您真的要關閉嗎?”如果沒有其他主窗口,應用程序將退出。
MyFrame::OnAbout()將顯示一個包含一些文本的小窗口。在本例中,是一個典型的“關于”窗口,其中包含有關程序的信息。
void MyFrame::OnAbout(wxCommandEvent& event) {wxMessageBox( "This is a wxWidgets' Hello world sample","About Hello World", wxOK | wxICON_INFORMATION ); }自定義菜單命令處理程序的實現可以執行任何任務,你的程序需要做什么,在這種情況下,我們將簡單地顯示一個消息,從它適合一個hello world的例子:
void MyFrame::OnHello(wxCommandEvent& event) {wxLogMessage("Hello world from wxWidgets!"); }全部程序如下
// wxWidgets "Hello world" Program // For compilers that support precompilation, includes "wx/wx.h". #include <wx/wxprec.h> #ifndef WX_PRECOMP#include <wx/wx.h> #endif class MyApp: public wxApp { public:virtual bool OnInit(); }; class MyFrame: public wxFrame { public:MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); private:void OnHello(wxCommandEvent& event);void OnExit(wxCommandEvent& event);void OnAbout(wxCommandEvent& event);wxDECLARE_EVENT_TABLE(); }; enum {ID_Hello = 1 }; wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)EVT_MENU(ID_Hello, MyFrame::OnHello)EVT_MENU(wxID_EXIT, MyFrame::OnExit)EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) wxEND_EVENT_TABLE() wxIMPLEMENT_APP(MyApp); bool MyApp::OnInit() {MyFrame *frame = new MyFrame( "Hello World", wxPoint(50, 50), wxSize(450, 340) );frame->Show( true );return true; } MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame(NULL, wxID_ANY, title, pos, size) {wxMenu *menuFile = new wxMenu;menuFile->Append(ID_Hello, "&Hello...\tCtrl-H","Help string shown in status bar for this menu item");menuFile->AppendSeparator();menuFile->Append(wxID_EXIT);wxMenu *menuHelp = new wxMenu;menuHelp->Append(wxID_ABOUT);wxMenuBar *menuBar = new wxMenuBar;menuBar->Append( menuFile, "&File" );menuBar->Append( menuHelp, "&Help" );SetMenuBar( menuBar );CreateStatusBar();SetStatusText( "Welcome to wxWidgets!" ); } void MyFrame::OnExit(wxCommandEvent& event) {Close( true ); } void MyFrame::OnAbout(wxCommandEvent& event) {wxMessageBox( "This is a wxWidgets' Hello world sample","About Hello World", wxOK | wxICON_INFORMATION ); } void MyFrame::OnHello(wxCommandEvent& event) {wxLogMessage("Hello world from wxWidgets!"); }總結
以上是生活随笔為你收集整理的wxWidgets随笔(4)-hello,world的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI理论知识整理(6)-最大似然法
- 下一篇: 前端windows下常用的CMD 命令归