Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Nindzzya
In need of some credit
Posts: 1 Joined: Mon Apr 06, 2020 5:46 am
Post
by Nindzzya » Mon Apr 06, 2020 6:11 am
Как при закрытии диалога нажимая на крестик [x] в заголовке окна завершить приложение, не создавая кнопку Close в диалоге? Вот что я написал для примера. Какие изменения мне нужно внести?
Code: Select all
#include "wx/wx.h"
enum
{
wxID_Dialog = 5000,
wxID_diagl_Button,
wxID_diagl_Panel,
wxID_main
};
class MyApp : public wxApp
{
public:
virtual bool OnInit() wxOVERRIDE;
};
class MyFrame : public wxFrame
{
public:
MyFrame();
void OnQuit(wxCommandEvent& event);
wxDECLARE_EVENT_TABLE();
};
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(wxID_CLOSE, MyFrame::OnQuit)
wxEND_EVENT_TABLE()
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
new MyFrame();
return true;
}
MyFrame::MyFrame()
: wxFrame(NULL, wxID_main, "main_window", wxDefaultPosition, wxSize(450, 650))
{
wxDialog *m_Dialg = new wxDialog(GetParent(), wxID_Dialog, "Диалог", wxDefaultPosition, wxDefaultSize);
wxBoxSizer *dialg_sizer = new wxBoxSizer(wxVERTICAL);
wxPanel *dialg_Panel = new wxPanel((wxWindow::FindWindowById(wxID_Dialog)), wxID_diagl_Panel);
wxButton *firstButton_Load = new wxButton(dialg_Panel, wxID_diagl_Button, "Выберете файл");
dialg_sizer->Add(firstButton_Load, 1, wxEXPAND | wxALL, 10);
dialg_Panel->SetSizer(dialg_sizer);
m_Dialg->ShowModal();
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
}
wx 3.1.2 win
T-Rex
Moderator
Posts: 1249 Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Post
by T-Rex » Mon Apr 06, 2020 3:11 pm
Code: Select all
#include <wx/wx.h>
#include <wx/frame.h>
#include <wx/window.h>
#include <wx/button.h>
#include <wx/dialog.h>
class wxTestFrame : public wxFrame
{
public:
wxTestFrame(wxWindow* parent, const wxString& title) : wxFrame(parent, wxID_ANY, title)
{
wxButton* button = new wxButton(this, wxID_HIGHEST + 1, wxT("Close Dialog"));
wxFrame::Connect(wxID_HIGHEST + 1, wxEVT_BUTTON,
wxObjectEventFunction(&wxTestFrame::OnCloseDialogButton));
}
void OnCloseDialogButton(wxCommandEvent& event)
{
wxDialog dialog(this, wxID_ANY, _("Close Dialog"));
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(new wxButton(&dialog, wxID_OK, _("OK")));
dialog.SetSizer(sizer);
sizer->Fit(&dialog);
int result = dialog.ShowModal();
switch(result)
{
case wxID_OK:
Close();
break;
case wxID_CANCEL:
Close();
break;
}
}
};
class wxTestApp : public wxApp
{
public:
virtual bool OnInit()
{
wxTestFrame* frame = new wxTestFrame(NULL, _("Test"));
frame->Show();
return true;
}
};
IMPLEMENT_APP(wxTestApp);