2010-01-22 3 views
0

Je crée une fenêtre simple avec wxwidgets. Comment puis-je changer la bordure? Comment puis-je appeler la fonction destroy (OnClose) avec le bouton flèche droite enfoncé?Comment puis-je changer la bordure?

#include <wx/wx.h> 

class _Frame: public wxFrame 
{ 
    public: 
     _Frame(wxFrame *frame, const wxString& title); 
    private: 
    void OnClose(wxCloseEvent& event); 
     DECLARE_EVENT_TABLE() 
}; 

BEGIN_EVENT_TABLE(_Frame, wxFrame) 
END_EVENT_TABLE() 

_Frame::_Frame(wxFrame *frame, const wxString& title) 
    : wxFrame(frame, -1, title) 
{} 

void _Frame::OnClose(wxCloseEvent &event) 
{ 
    Destroy(); 
} 

class _App : public wxApp 
{ 
    public: 
     virtual bool OnInit(); 
}; 

IMPLEMENT_APP(_App); 

bool _App::OnInit() 
{ 
    _Frame* frame = new _Frame(0L, _("wxWidgets Application Template")); 
    frame->Show(); 

    return true; 
} 
+0

Ne commencez pas les noms avec un trait de soulignement. Ces noms sont réservés au compilateur. Par exemple. pour une utilisation dans les macro dans les en-têtes standard. – MSalters

+0

De quelle manière voulez-vous changer la bordure? – RickNotFred

Répondre

1

Pour fermer la fenêtre flèche droite dont vous avez besoin pour piéger EVT_CHAR ou EVT_KEY_DOWN comme ceci:

fichier d'en-tête

:

void OnChar(wxKeyEvent& event); 
fichier source

:

void _Frame::OnChar(wxKeyEvent& event) 
{ 
    if (event.GetKeyCode() == WXK_RIGHT) 
    { 
    wxCommandEvent close(wxEVT_CLOSE_WINDOW); 
    AddPendingEvent(close); 
    } 
    event.Skip(); 
} 

BEGIN_EVENT_TABLE(_Frame, wxFrame) 
    EVT_CHAR(_Frame::OnChar) 
END_EVENT_TABLE() 
1

Changer la bordure (en définissant un style différent de wxBORDER_XXX) ne fonctionne pas pour toutes les fenêtres/sous l plates-formes après la création de la fenêtre initiale, donc vous feriez mieux de recréer la fenêtre si vous avez vraiment, vraiment besoin de le faire.

Questions connexes