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"
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()
};
ed ecco il file di implementazione "basic.cpp" (la parte incriminata sta alla fine)
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();
}
}