non riesco a capire perche premendo il tasto OK di una MessageDialog non mi entra in un blocco if
codice:wxMessageDialog * messaggino = new wxMessageDialog(this,"Sei sicuro?","Alessio",wxYES | wxCANCEL); if(messaggino->ShowModal() == wxID_OK) { wxMessageDialog * ciccio = new wxMessageDialog(this,"ci sei riuscito","Alessioxxx",wxYES); ciccio->ShowModal(); }
posto tutto il codice per completezza
ecco il file header "basic.h"
ed ecco il file di implementazione "basic.cpp" (la parte incriminata sta alla fine)codice://dichiarazione della classe application //sarà il punto di partenza della applicazione //alla chiamata onInit verra istanzato la classe frame class BasicApplication : public wxApp { public: virtual bool OnInit(); }; //dichiarazione della classe frame class BasicFrame : public wxFrame { public: //dichieto costruttore e distruttore BasicFrame(const wxChar *titolo, int xpos, int ypos, int width, int height); ~BasicFrame(); wxTextCtrl *myDisplay; void wxID_OK_onClick(wxCommandEvent &event); DECLARE_EVENT_TABLE() };
codice:#include <wx/wx.h> #include "basic.h" //macro che chiama internamente il metodo MAIN IMPLEMENT_APP(BasicApplication) //quelsta è la prima chiamata utile che viene invocata //qui inizializzo le mie form(frame) bool BasicApplication::OnInit() { BasicFrame *MiaFinestra = new BasicFrame("alessio",50,50,400,200); MiaFinestra->Show(TRUE); SetTopWindow(MiaFinestra); return TRUE; } ///////////////////////////////////////////////////////////////// /////////implementazione dei metodi della classe frame////////// //costruttore BasicFrame::BasicFrame(const wxChar *titolo, int xpos,int ypos, int width, int height) : wxFrame((wxFrame *)NULL, -1, titolo, wxPoint(xpos,ypos), wxSize(width,height)) { wxBoxSizer *top_sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL); myDisplay = new wxTextCtrl(this,-1,"my text",wxDefaultPosition,wxSize(300,60),wxTE_MULTILINE); top_sizer->Add(myDisplay, wxSizerFlags(1).Expand().Border(wxALL,10)); //aggiungo due bottoni al sizer che ho dedicato a loro button_sizer->Add(new wxButton(this,wxID_OK,"OK"), wxSizerFlags(0).Align(0).Expand().Border(wxALL,10)); button_sizer->Add(new wxButton(this,wxID_CANCEL,"Cancella"), wxSizerFlags(0).Align(0).Border(wxALL,10)); //aggiungo il sizer dei bottoni a quello principale top_sizer->Add(button_sizer,0,wxALIGN_RIGHT); top_sizer->SetSizeHints(this); //setta le dimensioni della finestra al minimo contenimento di tutti gli oggetti SetSizer(top_sizer); //assegna il sizer principale } //distruttore BasicFrame::~BasicFrame() { } //implementazione tavola degli eventi BEGIN_EVENT_TABLE(BasicFrame,wxFrame) EVT_BUTTON(wxID_OK,BasicFrame::wxID_OK_onClick) END_EVENT_TABLE() //funzione richiamata al click del pulsante ok void BasicFrame::wxID_OK_onClick(wxCommandEvent &event) { wxMessageDialog * messaggino = new wxMessageDialog(this,"Sei sicuro?","Alessio",wxYES | wxCANCEL); if(messaggino->ShowModal() == wxID_OK) { wxMessageDialog * ciccio = new wxMessageDialog(this,"ci sei riuscito","Alessioxxx",wxYES); ciccio->ShowModal(); } }

Rispondi quotando
