Bonjour.
En imitant un exemple, j'ai dérivé de la classe wxFrame une classe MonEditeurAnsiStaticFrame dont le constructeur (qui a des arguments) ne contient pas d'appel explicite au constructeur de wxFrame (qui a aussi des arguments) mais bien un appel à la méthode wxFrameCreate(), qui a les mêmes arguments que le constructeur de wxFrame.
Voici le code de mon constructeur :
Peu importe le sens exact des 5 dernières instructions, vous vous doutez qu'elles n'appellent pas le constructeur de wxFrame.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 MonEditeurAnsiStaticFrame::MonEditeurAnsiStaticFrame(wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style) { wxFrame::Create(parent, id, caption, pos, size, style); CreerBarreMenus(); CreerBarreDEtat(); Connect(ID_ITEMMENU_APPLICATION_QUIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MonEditeurAnsiStaticFrame::QuidItemApplicationQuitterClic)); Connect(ID_ITEMMENU_FICHIER_NOUVEAU, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MonEditeurAnsiStaticFrame::QuidItemFichierNouveauClic)); Connect(ID_ITEMMENU_FICHIER_FERMER, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MonEditeurAnsiStaticFrame::QuidItemFichierFermerClic)); }
Ce qui m'étonne, c'est que ce code fonctionne correctement (j'obtiens la fenêtre avec les propriétés voulues) alors que mon constructeur ne contient pas d'appel explicite au constructeur de wxFrame.
Or un tel appel est obligatoire, puisque le constructeur de la classe mère a des arguments (Dupin, p. 233-235).
Faut-il comprendre que l'appel à la méthode wxFrame::Create() contient lui-même un appel au constructeur de la classe mère ?
Et au fait, que fait exactement cette méthode wxFrame::Create() ?
La documentation dit :
wxFrame::Create
bool Create(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame")
Used in two-step frame construction. See wxFrame::wxFrame for further details.
http://www.wxwidgets.org/manuals/sta...#wxframecreate
Il n'y a rien de plus sous wxFrame::wxFrame
Qu'est-ce qu'une "construction en deux étapes" ?
Merci d'avance.
M.
Partager