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();

    }


}