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

C++ 通过选择'关闭应用程序;退出';菜单项-wxWidgets 3.0,c++,menu,wxwidgets,codeblocks,windows-7-x64,C++,Menu,Wxwidgets,Codeblocks,Windows 7 X64,到目前为止,我已经为wxWidgets应用程序编写了一些简单的代码,比如创建菜单、框架和一些按钮。要完成退出过程,我有一个显示消息框的功能: int OnExit( ) { wxMessageBox( "Closing the application", wxOK | wxICON_INFORMATION ) return 0; } 通过单击关闭(X)按钮关闭应用程序将显示消息框,然后退出。但是通过点击“退出”菜单项来关闭它对我不起作用。我曾尝试从一个旧示例和wxWidgets

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

int OnExit( )
  {
  wxMessageBox( "Closing the application", wxOK | wxICON_INFORMATION )
  return 0;
  }
通过单击关闭(X)按钮关闭应用程序将显示消息框,然后退出。但是通过点击“退出”菜单项来关闭它对我不起作用。我曾尝试从一个旧示例和wxWidgets项目附带的代码块基本示例代码中复制一些代码,但没有成功。请显示从菜单项关闭应用程序的方法。

尝试在web上搜索“wxwidgets关闭窗口菜单”:

OnExit
函数中,您需要调用示例中的
Close
方法。

尝试在web上搜索“wxwidgets关闭窗口菜单”:
// 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);

OnExit
函数中,您需要调用示例中的
Close
方法。

尝试在web上搜索“wxwidgets关闭窗口菜单”:
// 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);

OnExit
函数中,您需要调用示例中的
Close
方法。

尝试在web上搜索“wxwidgets关闭窗口菜单”:
// 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);

OnExit
函数中,需要调用示例中的
Close
方法。

//Build:g++this.cpp-std=gnu++11$(wx config--cxflags--libs core,base)
// 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);
#包括 类别:公共wxApp { 公众: bool OnInit(){ //创建主框架。 wxFrame*frame=新的wxFrame(NULL,wxID_ANY,wxT(“demo”)); //添加菜单栏 wxMenu*菜单[]={new wxMenu,new wxMenu}; wxString标签[]={wxT(“&File”),wxT(“&Help”)}; frame->wxFrame::SetMenuBar(新的wxMenuBar(2,菜单,标签)); 菜单[0]->Append(wxID_退出); //为菜单项wxID_EXIT绑定事件处理方法。 此->绑定(wxEVT_菜单,[frame](wxCommandEvent&)->void{ 框架->关闭(); /*1.方法wxWindow::Close *2.事件类型wxEVT\u关闭\u窗口 *3.方法wxTopLevelWindow::OnCloseWindow *4.方法wxTopLevelWindow::Destroy(重写wxWindow::Destroy) *5.op删除 */ },wxID_出口); //输入消息循环。 框架->中心(wxBOTH); 帧->显示(真); 返回true; } int OnExit(){ wxMessageBox(“关闭应用程序”,wxEmptyString,wxOK | wxICON_信息); 返回此->wxApp::OnExit(); } }; wxDECLARE_应用程序(CApp); wxIMPLEMENT_应用程序(CApp);
//Build:g++this.cpp-std=gnu++11$(wx-config-cxflags-libs-core,base)
#包括
类别:公共wxApp
{
公众:
bool OnInit(){
//创建主框架。
wxFrame*frame=新的wxFrame(NULL,wxID_ANY,wxT(“demo”));
//添加菜单栏
wxMenu*菜单[]={new wxMenu,new wxMenu};
wxString标签[]={wxT(“&File”),wxT(“&Help”)};
frame->wxFrame::SetMenuBar(新的wxMenuBar(2,菜单,标签));
菜单[0]->Append(wxID_退出);
//为菜单项wxID_EXIT绑定事件处理方法。
此->绑定(wxEVT_菜单,[frame](wxCommandEvent&)->void{
框架->关闭();
/*1.方法wxWindow::Close
*2.事件类型wxEVT\u关闭\u窗口
*3.方法wxTopLevelWindow::OnCloseWindow
*4.方法wxTopLevelWindow::Destroy(重写wxWindow::Destroy)
*5.op删除
*/
},wxID_出口);
//输入消息循环。
框架->中心(wxBOTH);
帧->显示(真);
返回true;
}
int OnExit(){
wxMessageBox(“关闭应用程序”,wxEmptyString,wxOK | wxICON_信息);
返回此->wxApp::OnExit();
}
};
wxDECLARE_应用程序(CApp);
wxIMPLEMENT_应用程序(CApp);
//Build:g++this.cpp-std=gnu++11$(wx-config-cxflags-libs-core,base)
#包括
类别:公共wxApp
{
公众:
bool OnInit(){
//创建主框架。
wxFrame*frame=新的wxFrame(NULL,wxID_ANY,wxT(“demo”));
//添加菜单栏
wxMenu*菜单[]={new wxMenu,new wxMenu};
wxString标签[]={wxT(“&File”),wxT(“&Help”)};
frame->wxFrame::SetMenuBar(新的wxMenuBar(2,菜单,标签));
菜单[0]->Append(wxID_退出);
//为菜单项wxID_EXIT绑定事件处理方法。
此->绑定(wxEVT_菜单,[frame](wxCommandEvent&)->void{
框架->关闭();
/*1.方法wxWindow::Close
*2.事件类型wxEVT\u关闭\u窗口
*3.方法wxTopLevelWindow::OnCloseWindow
*4.方法wxTopLevelWindow::Destroy(重写wxWindow::Destroy)
*5.op删除
*/
},wxID_出口);
//输入消息循环。
框架->中心(wxBOTH);
帧->显示(真);
返回true;
}
int OnExit(){
wxMessageBox(“关闭应用程序”,wxEmptyString,wxOK | wxICON_信息);
返回此->wxApp::OnExit();
}
};
wxDECLARE_应用程序(CApp);
wxIMPLEMENT_应用程序(CApp);
//Build:g++this.cpp-std=gnu++11$(wx-config-cxflags-libs-core,base)
#包括
类别:公共wxApp
{
公众:
bool OnInit(){
//创建主框架。
wxFrame*frame=新的wxFrame(NULL,wxID_ANY,wxT(“demo”));
//添加菜单栏
wxMenu*菜单[]={new wxMenu,new wxMenu};
wxString标签[]={wxT(“&File”),wxT(“&Help”)};
frame->wxFrame::SetMenuBar(新的wxMenuBar(2,菜单,标签));
菜单[0]->Append(wxID_退出);
//为菜单项wxID_EXIT绑定事件处理方法。
此->绑定(wxEVT_菜单,[frame](wxCommandEvent&)->void{
框架->关闭();
/*1.方法wxWindow::Close
*2.事件类型wxEVT\u关闭\u窗口
*3.方法wxTopLevelWindow::OnClo