C++,wxWidgets,bind EVT_CHECKBOX,弹出对话框,并且退出时,显示确认,取消对话框,完整示例
时间: 2024-03-09 14:49:48 浏览: 105
好的,这里是一个完整的示例:
```cpp
#include <wx/wx.h>
#include <wx/msgdlg.h>
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 OnCheckBox(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
wxCheckBox* m_checkBox;
DECLARE_EVENT_TABLE()
};
enum
{
ID_CHECKBOX = 1000,
ID_EXIT
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_CHECKBOX(ID_CHECKBOX, MyFrame::OnCheckBox)
EVT_MENU(ID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
bool MyApp::OnInit()
{
MyFrame* frame = new MyFrame("Checkbox Example", wxDefaultPosition, wxSize(250, 150));
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_EXIT, "E&xit\tAlt-X", "Exit the program");
wxMenuBar* menuBar = new wxMenuBar;
menuBar->Append(menuFile, "&File");
SetMenuBar(menuBar);
m_checkBox = new wxCheckBox(this, ID_CHECKBOX, "Show confirmation on exit", wxPoint(20, 20));
Centre();
}
void MyFrame::OnCheckBox(wxCommandEvent& event)
{
if (m_checkBox->GetValue())
{
wxMessageBox("Confirmation will be shown on exit", "Checkbox Example", wxICON_INFORMATION);
}
}
void MyFrame::OnExit(wxCommandEvent& event)
{
if (m_checkBox->GetValue())
{
int result = wxMessageBox("Are you sure you want to exit?", "Checkbox Example", wxYES_NO | wxICON_QUESTION);
if (result == wxYES)
{
Close(true);
}
}
else
{
Close(true);
}
}
IMPLEMENT_APP(MyApp)
```
这个示例程序创建了一个带有一个复选框的窗口,当用户勾选复选框时,程序会弹出一个提示框,告诉用户在退出时会显示确认对话框。当用户点击菜单栏中的“退出”按钮时,如果复选框被勾选,程序会弹出一个确认对话框,询问用户是否真的要退出。如果用户选择“是”,程序就会退出;如果用户选择“否”或者关闭了对话框,程序就不会退出。如果复选框没有被勾选,程序会直接退出。
阅读全文