通过选择退出'关闭应用程序菜单项 - wxWidgets 3.0

时间:2014-06-12 00:06:12

标签: c++ menu wxwidgets codeblocks windows-7-x64

到目前为止,我已经为wxWidgets应用程序编写了一些简单的代码,比如创建菜单,框架和几个按钮。要按照退出的过程,我有这个功能,显示一个消息框:

int OnExit( )
  {
  wxMessageBox( "Closing the application", wxOK | wxICON_INFORMATION )
  return 0;
  }

单击关闭(X)按钮关闭应用程序会显示消息框,然后退出。但是通过单击“退出”菜单项关闭它对我来说不起作用。我尝试从旧示例中复制一些代码,并尝试从wxWidgets项目附带的CodeBlocks基本示例代码中复制,但没有运气。请告诉我一个从菜单项关闭应用程序的方法。

2 个答案:

答案 0 :(得分:2)

尝试在网上搜索“wxwidgets关闭窗口菜单”:
wxWidgets Hello World Example

OnExit功能中,您需要调用示例中的Close方法。

答案 1 :(得分:1)

// Build: g++ this.cpp -std=gnu++11 $(wx-config --cxxflags --libs core,base)
#include <wx/wx.h>

class CApp : public wxApp
{
public:
    bool OnInit() {
        // Create the main frame.
        wxFrame * frame = new wxFrame(NULL, wxID_ANY, wxT("demo"));
        // Add the menubar
        wxMenu * menus[] = {new wxMenu, new wxMenu};
        wxString labels[] = {wxT("&File"), wxT("&Help")};
        frame->wxFrame::SetMenuBar(new wxMenuBar(2, menus, labels));
        menus[0]->Append(wxID_EXIT);
        // Bind an event handling method for menu item wxID_EXIT.
        this->Bind(wxEVT_MENU, [frame](wxCommandEvent &)->void{
            frame->Close();
            /* 1. method wxWindow::Close
             * 2. event type wxEVT_CLOSE_WINDOW
             * 3. method wxTopLevelWindow::OnCloseWindow
             * 4. method wxTopLevelWindow::Destroy (overriding wxWindow::Destroy)
             * 5. op delete
             */
        }, wxID_EXIT);
        // Enter the message loop.
        frame->Centre(wxBOTH);
        frame->Show(true);
        return true;
    }
    int OnExit() {
        wxMessageBox("Closing the application", wxEmptyString, wxOK | wxICON_INFORMATION);
        return this->wxApp::OnExit();
    }
};
wxDECLARE_APP(CApp);
wxIMPLEMENT_APP(CApp);