Bonjour.
J'écris un programme qui commence par ouvrir un wxFrame de largeur 640 et de hauteur 480, comportant une barre de menus et une barre d'état. Le programme ne prescrit pas la hauteur de ces deux barres, parce qu'il me semble que ce n'est pas prévu.
Ensuite, il faut ajouter un wxTextCtrl qui doit occuper
1° toute la largeur du wxFrame
2° la hauteur libre entre la barre de menus et la barre d'état.
J'ai essayé ceci (dans une fonction membre d'une classe dérivée de wxFrame) :
mais, comme on peut s'y attendre, le wxTextCtrl cache la barre d'état quand le wxFrame apparaît, puisqu'on lui attribue une hauteur (480) égale à celle du wxFrame.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 wxBoxSizer* Sizer1 = new wxBoxSizer(wxVERTICAL); SetSizer(Sizer1); ptrZoneTexte = new wxTextCtrl(this, ID_ZONETEXTE, wxEmptyString, wxDefaultPosition, wxSize(640, 480), wxTE_MULTILINE | wxTE_PROCESS_ENTER | wxTE_RICH | wxTE_NOHIDESEL); Sizer1->Add(ptrZoneTexte, 1, wxEXPAND, 0);
Si on actionne deux fois (en sens inverses, donc) le petit bouton de redimensionnement en haut à droite du wxFrame (je travaille sous Windows), le résultat est satisfaisant : le wxTextCtrl n'empiète plus sur la barre d'état.
J'aimerais obtenir ce résultat dès l'apparition du wxTextCtrl.
On pourrait évidemment attribuer au wxTextCtrl une hauteur un peu plus petite que 480, en tenant compte de la hauteur des barres de menu et d'état (et aussi de titre ?), mais puisque, si je comprends bien, on ne peut pas prévoir avec certitude la hauteur de ces barres, cela me semble du chipotage.
Quelqu'un peut-il m'aider (et me dire si j'ai eu raison de recourir à un "sizer", et à un "sizer" vertical) ?
Merci d'avance.
M.
P.S. J'ai "édité" parce que j'avais chaque fois mis "barre de tâches" au lieu de "barre d'état".
Partager