Page 1 of 1
запретить wxFrame изменять размер
Posted: Wed Apr 12, 2017 11:19 am
by gtafan
Хочу, что бы моё окно (wxFrame) оставалось всегда одного размера. На яве например есть функция setResizable(false) для этого, в документации wxWidgets я к сожалению ничего похожего не нашёл. Может кто подсказать как сделать нечто подобное в wxWidgets? Я использую CodeBlocks с wxSmith.
Re: запретить wxFrame изменять размер
Posted: Wed Apr 12, 2017 2:03 pm
by ONEEYEMAN
Dobrogo vremeni sutok,
Zahodili sjuda:
http://docs.wxwidgets.org/trunk/classwx_frame.html?
Esli wxFrame sozdavalas so stiljami po umolchniju - ispolzuetsja wxRESIZE_BORDER.
Esli ne pomoget - pishite.
I esche - ja tak ponimaju chto nugno ubrat wxMINIMIZE_BOX/wxMAXIMIZE_BOX ottuda ge.
Re: запретить wxFrame изменять размер
Posted: Thu Apr 13, 2017 1:18 pm
by gtafan
ONEEYEMAN wrote:Dobrogo vremeni sutok,
Zahodili sjuda:
http://docs.wxwidgets.org/trunk/classwx_frame.html?
Esli wxFrame sozdavalas so stiljami po umolchniju - ispolzuetsja wxRESIZE_BORDER.
Esli ne pomoget - pishite.
I esche - ja tak ponimaju chto nugno ubrat wxMINIMIZE_BOX/wxMAXIMIZE_BOX ottuda ge.
wxMINIMIZE_BOX убирать не надо, просто не хочу, что бы размер окна можно было изменят как с помощью wxMAXIMIZE_BOX так и с помощью мыши.
Так что на wxMINIMIZE_BOX, wxSYSTEM_MENU, wxCAPTION, wxCLOSE_BOX и wxCLIP_CHILDREN галочки поставить, а с wxDEFAULT_FRAME_STYLE убрать?
Re: запретить wxFrame изменять размер
Posted: Thu Apr 13, 2017 1:40 pm
by Serge_N
Необходимо установить минимальный и максимальный размер окна.
http://docs.wxwidgets.org/3.0/overview_ ... izing.html
"Minimal Size": the minimal size of a widget is a size that is normally explicitly set by the programmer either with the wxWindow::SetMinSize() method or with the wxWindow::SetSizeHints() method. Most controls will also set the minimal size to the size given in the control's constructor if a non-default value is passed. Top-level windows such as wxFrame will not allow the user to resize the frame below the minimal size.
"Maximum Size": just like for the minimal size, the maximum size is normally explicitly set by the programmer with the wxWindow::SetMaxSize() method or with wxWindow::SetSizeHints(). Top-level windows such as wxFrame will not allow the user to resize the frame above the maximum size.
Re: запретить wxFrame изменять размер
Posted: Thu Apr 13, 2017 1:40 pm
by ONEEYEMAN
Aga.
Esli rabotat ne budet - otpishites'
Re: запретить wxFrame изменять размер
Posted: Tue Apr 18, 2017 1:57 pm
by gtafan
Поставил галочки на wxMINIMIZE_BOX, wxCAPTION и wxCLOSE_BOX и убрал галочку с wxDEFAULT_FRAME_STYLE и всё получилось. Я так понимаю, что если захочу использовать меню, то надо ещё поставить галочку на wxSYSTEM_MENU, а вот для чего этот флаг wxCLIP_CHILDREN я к сожалению не понял.
Re: запретить wxFrame изменять размер
Posted: Tue Apr 18, 2017 2:07 pm
by ONEEYEMAN
https://translate.google.com/#en/ru/clipping%20box
Eto znachit chto okoshko budet perekryvat svoih potomkov.
Re: запретить wxFrame изменять размер
Posted: Tue Apr 18, 2017 3:49 pm
by gtafan
Вот это я не совсем понимаю, что за потомки? Другие окна что ли?
Re: запретить wxFrame изменять размер
Posted: Tue Apr 18, 2017 3:58 pm
by ONEEYEMAN
Pervyj parametr u konstruktora, i.e. wxButton:
wxButton *ok = new wxButton( m_panel, .... );
Dlja obekta m_panel knopka "ok" javljaetsja potomkom. I naoborot - dlja knopki "ok" m_panel javlaetsja roditelem (parent).
Re: запретить wxFrame изменять размер
Posted: Wed Apr 19, 2017 11:39 am
by gtafan
ONEEYEMAN wrote:Pervyj parametr u konstruktora, i.e. wxButton:
wxButton *ok = new wxButton( m_panel, .... );
Dlja obekta m_panel knopka "ok" javljaetsja potomkom. I naoborot - dlja knopki "ok" m_panel javlaetsja roditelem (parent).
А значит таки потомки в смысле структуры дерева?
Re: запретить wxFrame изменять размер
Posted: Wed Apr 19, 2017 12:48 pm
by ONEEYEMAN
Kogda okoshko sozdaetsja, u objekta okna dolgen byt roditel - okno po otnosheniju k kotoromu schitajutsja koordinaty i v predelah kotorogo eto okno moget peredvigatsja.
Takim roditelem moget byt uge suschestvujuschee okno ili NULL - v poslednem sluchae roditelem vystupaet Desktop/Rabochij stol.
Okno roditelja ukazyvaetsja pervym parametrom v kostruktore.
wxWindow( wxWindow *parent,.....);
wxButton( wxWindow *parent,......);
wxComboBox(wxWindow *parent,..);
i tak dalee.
Dlja vseh etih objektov pervym parametrom peredaetsja roditel/parent window.
Dlja etogo roditelja vse ego deti - te okna dlja kotoryh eto okno javljaetsja roditelem - budut ego potomkami.
Imejte v vidu chto nelzja sozdat okno bez roditelja - ukazav NULL vy govorite chto u okna roditelem budet vystupat Rabocjk Stol/Desktop.
Otnoshenija parent/child ne zavisjat ot tak nazyvaemogo Z-order - pologenija okna v strukture sistemy kotoroe mogno uvidet naprimer pri nagatii ALT+TAB.
Hope this helps.
Re: запретить wxFrame изменять размер
Posted: Wed Apr 19, 2017 3:32 pm
by gtafan
ONEEYEMAN wrote:Kogda okoshko sozdaetsja, u objekta okna dolgen byt roditel - okno po otnosheniju k kotoromu schitajutsja koordinaty i v predelah kotorogo eto okno moget peredvigatsja.
Takim roditelem moget byt uge suschestvujuschee okno ili NULL - v poslednem sluchae roditelem vystupaet Desktop/Rabochij stol.
Okno roditelja ukazyvaetsja pervym parametrom v kostruktore.
wxWindow( wxWindow *parent,.....);
wxButton( wxWindow *parent,......);
wxComboBox(wxWindow *parent,..);
i tak dalee.
Dlja vseh etih objektov pervym parametrom peredaetsja roditel/parent window.
Dlja etogo roditelja vse ego deti - te okna dlja kotoryh eto okno javljaetsja roditelem - budut ego potomkami.
Imejte v vidu chto nelzja sozdat okno bez roditelja - ukazav NULL vy govorite chto u okna roditelem budet vystupat Rabocjk Stol/Desktop.
Otnoshenija parent/child ne zavisjat ot tak nazyvaemogo Z-order - pologenija okna v strukture sistemy kotoroe mogno uvidet naprimer pri nagatii ALT+TAB.
Hope this helps.
Ну я понял, просто играясь с этим флагом не заметил никаких изменений, кнопки и другие элементы окна от перемены значения этого флага не как не изменялись.
За помощь спасибо.