Jak stworzyć nowe okno

2012-09-17 18:47
0

Witam.
Próbowałem stworzyć aplikację w oparciu o jedno okno jednak wydaje się to dosyć kłopotliwe. Postanowiłem Rozwiązać ten problem poprzez stworzenie kilku okien i odpowiednie ich wyświetlanie. Jednak nie wiem gdzie należy umieścić kod aby można było otworzyć nowe okno po naciśnięciu przycisku. Stworzyłem sobie nową klasę która dziedziczy po System::Windows::Forms::Form tak jak ma to miejsce w przypadku okna głównego jednak nie wiem co dalej. Potrafię zrobić aby wyświetlane to moje drugie okno zmieniając w pliku main

Application::Run(gcnew Form1()); 

W jaki sposób mogę uruchamiać poszczególne okna skoro nigdzie nie ma żadnej instancji danej klasy? Kod jest w C++ cli.

edytowany 1x, ostatnio: Alkan0id, 2012-09-17 18:50

Pozostało 580 znaków

2012-09-17 18:53
0

Użyj Google, nie gryzie. :P
http://docent-7.tk/J

a i jeszcze jedno, wstaw pan tagi i nie ten dział :)


"Najważniejszy w każdym działaniu jest początek."
edytowany 2x, ostatnio: Docent, 2012-09-17 19:09
Pokaż pozostałe 7 komentarzy
Nie działa. Firefox 15, Ubuntu, wyłączone ciasteczka i JS. Dostaję taki link: http://www.google.pl/#hl=pl&a[...]_gc.r_pw.r_cp.r_qf.&cad=b - adf88 2012-09-19 15:56
działa, to jest skrócony link, tego linku co podałeś wyżej ;) - Docent 2012-09-19 17:37
Po włączeniu JS działa. Teraz widzę, że jakiś dziwny ten link. Parametry są przekazywane przez # a nie normalnie przez ? i dopiero skrypt JS je interpretuje i wyświetla odpowiednią stronę. Ależ ten google udziwnia. Gdzie ci takiego linka wygenerowało z ciekawości? Spod www.google.pl? - adf88 2012-09-19 18:39
@adf88: wejdź sobie na mój Website -> Aplkacje -> Webowe, jeśli chodzi ci o generator ;) - Docent 2012-09-19 20:00
Nie chodzi mi skrót tylko o pełny adres. Ale nie ważne, już sobie sprawdziłem i wiem o co chodzi. Google dokleja w ten sposób parametry do linka bez przeładowania strony. - adf88 2012-09-19 20:19

Pozostało 580 znaków

2012-09-17 19:04
msm
0

Na przykład tak:

namespace UruchamianieWieluOkien
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            new Form1().Show();
            new Form1().Show();
            new Form1().Show();
            new Form1().Show();
            Application.Run(new Form1());
        }
    }
}

Czyli żeby pokazać jakieś okno tworzysz obiekt typu okna i wywołujesz na nim metodę .Show().

(Do C++/Cli to przenieś sam, zgaduję że powinno być (gcnew Form1())->Show(), ale głowy nie dam)

edytowany 1x, ostatnio: msm, 2012-09-17 19:06

Pozostało 580 znaków

2012-09-17 19:05

Dział to C# i .Net a problem dotyczy .NET. W google szukałem ale nie za bardzo to chciało działać. Teraz już wiem w czym jest problem wystarczyło dodać incude'a na początku i teraz wszystko jest ok. Wyskakiwał błąd " error C2143: syntax error : missing ';' before '^' " więc nie powiązałem tego z brakiem incude'a tym bardziej, że próbowałem tworzyć klasę w tym samym namespace'ie.

chodziło mi o dział Newbie, bo to są podstawy programowania ;) - Docent 2012-09-17 19:19

Pozostało 580 znaków

2012-09-17 19:29
0

W jaki sposób mogę uruchamiać poszczególne okna skoro nigdzie nie ma żadnej instancji danej klasy?

Jak to nie ma? Przecież taki kod:

Application::Run(gcnew Form1());

z powodzeniem można przerobić na:

Form1 ^form1 = gcnew Form1();
Application::Run(form1);

albo nawet

Form1 form1;
Application::Run(%form1);

Pozostało 580 znaków

2012-09-19 15:02
0

No teoretycznie nie ma żadnej instancji (chociaż w sumie w przypadku c++ cli żywotność okna nie zakończy się od razu więc niby jest). Ale masz rację nie zauważyłem, że tutaj wykorzystuje ten sposób. To co napisałeś jest tego odpowiednikiem. Natomiast jeśli chodzi o dodawanie do pliku main nowego okna to otworzy się ono tylko po zamknięciu starego bo to już sprawdzałem.

Pozostało 580 znaków

2012-09-19 15:59
1
Alkan0id napisał(a):

Natomiast jeśli chodzi o dodawanie do pliku main nowego okna to otworzy się ono tylko po zamknięciu starego bo to już sprawdzałem.
WTF? Bredzisz synu (nie rozumiem cię).

edytowany 2x, ostatnio: adf88, 2012-09-19 16:09
Nie do końca, i nie przesadzaj z takimi tekstami... (Application.Run() wchodzi w pętlę główną okna, i faktycznie nie da się w ten sposób uruchomić dwóch okien na raz) - msm 2012-09-19 16:05
Aha, ty go rozumiesz. Ja nie. O tym pisałem. - adf88 2012-09-19 16:07
No jeśli próbuje uruchamiać dwa okna za pomocą Application.Run() to nie da rady - do zwykłego pokazania okna służy Form.Show() (co zresztą w pierwszej odpowiedzi w wątku pokazałem). - msm 2012-09-19 16:09
Aaaa, to już rozmiem. Application.Run przede wszystkim nie służy do pokazywania okien... - adf88 2012-09-19 16:11
Zawsze można mieć jedno okno per aplikacja, wywoływać Process.Start("KolejneOkno.exe"), a ten program "pokaże swoje okno" przez Application.Run. W tym podejściu dane między oknami możemy przekazywać w plikach i problem z głowy. - somekind 2012-09-19 20:59

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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