Wywoływanie nowego okienka wxWidget

0

Witam

Chciałbym zobaczyc <ort>najprostrzy</ort> przykład, w którym z jednego okna, wywoływaloby sie drugie(nie chce zeby bylo to okno dialogowe). Oczywiscie najlepiej gdyby bylo to przedstawione przy uzyciu bibliotek wxWidgets ale jesli bedzie to inne srodowisko C++ tez bede zadowolony. Wiem, ze w gre wchodza uchwyty, troche o tym poczytalem, lecz nigdzie nie moge znalezc prostego przykladu. Czlowiek na przykladach najszybciej i najdokladniej sie uczy, wiec prosze o maly przykladzik.

0

Skoro może być inne, to przykład z C++ Buildera:

Form2->show();

umieszczone np. w onClick() jakiegoś buttona.

0

hmmmm w Builderze działą idealnie.
Lecz myslalem, ze na wxWidgets bedzie tak samo. To nie rozwiazuje mojego problemu ale mimowszystko dzieki.

0

Wiem, ze w gre wchodza uchwyty,

Jeśli chodzi o wxWidgets, to po cholerę uchwyty? Tworzysz klasę z oknem (np. wxFrame) i wywołujesz metodę Show. Ot cała filozofia.

0

Ja też jestem początkujący jeśli chodzi o wxWidgets, ale stworzyłem coś takiego(może się komuś przyda):

#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif

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

class Window : public wxFrame
{
    public:
        Window(const wxString& title,const wxPoint& pos,const wxSize& size,long style = wxDEFAULT_FRAME_STYLE);
        wxPanel* Panel1;
        wxButton* WxButton1;
        void WxButton1Click(wxCommandEvent& event);
        class Window2 : public wxFrame
        {
            public:
            Window2(const wxString& title,const wxPoint& pos,const wxSize& size,long style = wxDEFAULT_FRAME_STYLE) : wxFrame(NULL,-1,title,pos,size,style)
            {}
        };
    private:
        DECLARE_EVENT_TABLE()
};
Window::Window(const wxString& title,const wxPoint& pos,const wxSize& size,long style) : wxFrame(NULL,-1,title,pos,size,style)
{
    Panel1 = new wxPanel(this,-1,wxPoint(0,0));
    WxButton1 = new wxButton(this,1,wxT("Nowe okno"),wxPoint(20,20),wxSize(80,25));
    
}
void Window::WxButton1Click(wxCommandEvent& event)
{
    Window2* NextWindow = new Window2(_T("Okno"),wxPoint(50,50),wxSize(300,300));
    NextWindow->Show(TRUE);
}
 
BEGIN_EVENT_TABLE(Window,wxFrame)
EVT_BUTTON(1,Window::WxButton1Click)
END_EVENT_TABLE()

IMPLEMENT_APP(Aplik)

bool Aplik::OnInit()
{
    Window* MainWindow = new Window(wxT("Program"),wxPoint(100,100),wxSize(400,400));
    MainWindow->Show(TRUE);
    return TRUE;
}

PS> Sugestie mile widziane;)

0

No tak wszytko dziala, dzieki wielkie.
Albo moze jeszcze jedno glupie pytanie.
A jesli chcialbym, tworzyc okna w DevC++ przez GUI, jest to duzo szybsze niz wklepywanie kodu dla poszczegolnych elementow okna(buttony, panele itp).
Istnieje taka mozliwosc jak: wykreowanie osobnego okna, dodanie go do projektu i jakas prosta funkcja wywloywanie go, z okna poprzedniego?

hmmm nie weim czy zostane dobrze zrozumiany

0

Niestety tu Ci nie pomogę bo nie znam się na Wizualnym Kreatorze Aplikacji bo jakoś mało go używam - z programowaniem wiążę swoją przyszłość więc wole kiedy kod jest analizowany przez moje oczy, wtedy więcej rozumiem z tego co tam klepie na tej klawiaturze. A wracając do Twojego problemu to chyba jedynym rozwiązaniem jest stworzenie okna dialogowego, oczywiście możesz się poświęcić i napisać kod tego okna samodzielnie - to nie takie trudne jak byś się modło wydawać i chyba najlepsze rozwiązanie.
A tak w ogóle to po co Ci jest to okno? co chcesz w nim zrobić ? Opisz to, to może wymyślimy jakieś inne rozwiązanie.

0

Oczywiscie masz racje i tak wlasnmie zrobilem.

Podstawowe okno jest w kreatorze i juz nie che mi sie tego zmieniac, ale nowe okno juz powstalo w calosci przeze mnie. Na poczatku natrafilem na wiele trudnosci, niektore metody mojej klasy nie widzialy obiektow, ale to tylko przez moja nieuwage. Teraz juz wszystko dziala i co najwazniejsze przy tworzeniu samemu, lepiej zrozumialem zasade dzialania aplikacji okienkowych. Troche zachodu ze wszystkim bo ustawianie buttonow i roznych kontrolek na panelu okna wymaga duzej ilosci prob i bledow, zeby byly we wlasciwym miejsu, ale z czasem idzie mi to coraz sprawniej.

Jeszcze raz dzieki, wasze uwagi i powyzszy kod kolegi bardzo mi pomogl.

1 użytkowników online, w tym zalogowanych: 0, gości: 1