|C++| Programy okienkowe - komendy w Visual C++

0

Witam!
Mam pytanie. Otóż chciałbym się dowiedzieć jaka jest komenda na przykład pod przycisk, aby po naciśnięciu zmieniła się zawartość okienka na inną. Chodzi mi o to, że np. mam okno główne i na nim mam przycisk i gdy nacisnę ten przycisk to na tym oknie pokaże mi się inna zawartość, np. jakiś spis treści i pod tym spisem przycisk "Powrót do menu głównego". Nie mówię, że to ma być dosłownie taka kompozycja ale chodzi mi o samą komendę, która sprawi, że zawartość okienka zmieni się. Prosiłbym o gotowy kod i ewentualne omówienie żebym wiedział o co chodzi.
Myślę, że rozumiecie o co mi chodzi i, że moja prośba jest zrozumiała dla Was. Jeśli nie to pytajcie się to spróbuję Wam wytłumaczyć moje pytanie :).
Z góry dziękuję :D.

0

Chodzi mi o to, że np. mam okno główne i na nim mam przycisk

Ale jak?

Windows Forms?
WinAPI?
MFC?
Qt?
wxWidgets?
etc...

0

Windows Forms Application

0
sebos napisał(a):

Windows Forms Application

W takim razie dlaczego C++ a nie np. C#?

0
tk napisał(a):

W takim razie dlaczego C++ a nie np. C#?

bo zacząłem się uczyć C++, a czy to w czymś przeszkadzz?

0

Nie mówię, że to ma być dosłownie taka kompozycja ale chodzi mi o samą komendę, która sprawi, że zawartość okienka zmieni się.

Możesz umieścić „zawartość” np. na panelach, które będą leżały w tym samym miejscu, ale tylko jeden będzie Visible.
Naciśnięcie przycisku chowa jeden, pokazuje drugi.

0

bo zacząłem się uczyć C++, a czy to w czymś przeszkadzz?

Tak. Jeżeli korzystasz z Windows Forms to tak naprawdę nie piszesz w C++, a w jednej z jego odmian: C++/CLI. Jest to język jeszcze bardziej skomplikowany niż C++ i wśród jego zamierzonych zastosowań NIE jest programowanie interfejsów użytkownika (choć oczywiście jest to teoretycznie możliwe). Kłopoty będzie ci sprawiać dodatkowa składnia do pracy z obiektami na stercie zarządzanej (co gorsza, w sytuacji, gdy nie znasz C++ nawet jej nie rozróżnisz) oraz bardzo mała ilość źródeł na ten temat w internecie.

0
tk napisał(a):

W takim razie dlaczego C++ a nie np. C#?

A jeśli próbowałbym zrobić coś takiego w C# to byłoby mi łatwiej?

0
sebos napisał(a):

A jeśli próbowałbym zrobić coś takiego w C# to byłoby mi łatwiej?

Powiem tak: zagadnienie, ktore tu poruszasz jest na tyle proste, ze roznica miedzy C++/CLI a C# nie jest az tak bardzo widoczna. Jednak ogolnie mowiac w C# pisze sie zdecydowanie lepiej i prosciej.

Jednym slowem: jezeli nie musisz korzystac z C++/CLI i nie jestes masochista to zainteresuj sie C#.

0
tk napisał(a):

Powiem tak: zagadnienie, ktore tu poruszasz jest na tyle proste, ze roznica miedzy C++/CLI a C# nie jest az tak bardzo widoczna.

Skoro jest proste to czy mógłbyś mi podać kod w C++ ( w C++ dlatego że, znam go dosyć dobrze i myślę, że nauka C# zajęłaby trochę czasu), który pozwoliłby na zrobienie czegoś takiego? :)

0
sebos napisał(a):
tk napisał(a):

Powiem tak: zagadnienie, ktore tu poruszasz jest na tyle proste, ze roznica miedzy C++/CLI a C# nie jest az tak bardzo widoczna.

Skoro jest proste to czy mógłbyś mi podać kod w C++ ( w C++ dlatego że, znam go dosyć dobrze i myślę, że nauka C# zajęłaby trochę czasu), który pozwoliłby na zrobienie czegoś takiego? :)

To że znasz C++ nie oznacza że w C++/CLI będzie to łatwe.
Przykładowo w C++/CLI nie ma Intellisense:
http://blogs.msdn.com/b/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx
(sprawdzone empirycznie)

Jeśli upierasz się przy C++ to wykorzystaj GUI przeznaczone dla tego języka (Qt, wxWidgets, GTK+).
Jeśli bardziej zależy na .NET to skorzystaj z C#.
Programowanie GUI C++/CLI będzie tak samo fascynujące jak programowanie stron WWW w C++ lub procedur składowanych w Lua.

0
sebos napisał(a):

Skoro jest proste to czy mógłbyś mi podać kod w C++ ( w C++ dlatego że, znam go dosyć dobrze i myślę, że nauka C# zajęłaby trochę czasu), który pozwoliłby na zrobienie czegoś takiego? :)

Bez urazy, ale troche nie przywyklem do tego, zeby komus robic gotowe projekty za darmo. Twoja wypowiedz bardziej pasuje do kategorii "Praca". Zerknij sobie na to cale C++/CLI, chociaz troche pocwicz i jak bedziesz mial juz jakies obeznanie w temacie to wtedy albo dasz juz rade napisac to samodzielnie, albo zapytasz po prostu o jakis konkretny szczegol.

0

... albo napiszesz ten sam post w dziale "Praca" proponując odpowiednią kwotę za odwalenie pracy za ciebie.

0
vpiotr napisał(a):

Przykładowo w C++/CLI nie ma Intellisense
Jakbym był złośliwy, to bym się przyczepił że C++/CLI to tylko język, a IntelliSense to ficzer konkretnego IDE, a nie część języka.

Ale zamiast tego wyjaśnię:
• jest w VS 2005
• jest w VS 2008
• nie ma w VS 2010 (chyba że doinstalować płatny Visual AssistX)
• jest w VS 2012

czyli nadal IntelliSense bardziej jest niż nie ma.

0
Azarien napisał(a):
vpiotr napisał(a):

Przykładowo w C++/CLI nie ma Intellisense
Jakbym był złośliwy, to bym się przyczepił że C++/CLI to tylko język, a IntelliSense to ficzer konkretnego IDE, a nie część języka.

Ale zamiast tego wyjaśnię:
• jest w VS 2005
• jest w VS 2008
• nie ma w VS 2010 (chyba że doinstalować płatny Visual AssistX)
• jest w VS 2012

czyli nadal IntelliSense bardziej jest niż nie ma.

Zamiast tego lepiej odpal VS 2010 i naciśnij Ctrl+Space w obu typach projektów...

Gdybyś chciał dyskutować o tym co należy do Intellisense a co nie to proponuję zajrzeć tutaj:
http://en.wikipedia.org/wiki/Intellisense

0
Azarien napisał(a):

Możesz umieścić „zawartość” np. na panelach, które będą leżały w tym samym miejscu, ale tylko jeden będzie Visible.
Naciśnięcie przycisku chowa jeden, pokazuje drugi.

A jak to zrobić?

0

Normalnie... przecież nikt Cię tu nie będzie prowadził za rączkę i pokazywał gdzie kliknąć... Od tego są książki i tutoriale, nie fora dyskusyjne.

0

Widzę, że na tym forum nie ma nikogo kto mógłby mi pomóc tylko jest kilka osób, które się wymądrzają, a nic konkretnego nie powiedzą. Skoro mówisz, że to jest proste albo żeby zrobić to normalnie to rozumiem, że potrafisz to zrobić tylko, że po prostu nie chce ci się powiedzieć komuś, kto nie wie i nie potrafi tego zrobić mimo kilku godzin spędzonych przed komputerem i wklepywaniu różnych kodów, które są nieprawidłowe i program wyrzuca mu błędy. Nie proszę o to żeby ktoś mnie "prowadził za rączkę i pokazywał gdzie kliknąć" tylko proszę o przykład kodu, który spowoduje to, o co prosiłem. Czy komuś ręka odpadnie tylko dlatego, że poda mi kod? Ludzie! Jeśli ktoś się martwi o to, że jeśli dostanę gotowy kod to nie zrozumiem nic z tego i to mi nic nie da to co wam szkodzi? To MI to nic nie da, a nie WAM...Żal..:/

0
sebos napisał(a):

Widzę, że na tym forum nie ma nikogo kto mógłby mi pomóc tylko jest kilka osób, które się wymądrzają, a nic konkretnego nie powiedzą. Skoro mówisz, że to jest proste albo żeby zrobić to normalnie to rozumiem, że potrafisz to zrobić tylko, że po prostu nie chce ci się powiedzieć komuś, kto nie wie i nie potrafi tego zrobić mimo kilku godzin spędzonych przed komputerem i wklepywaniu różnych kodów, które są nieprawidłowe i program wyrzuca mu błędy. Nie proszę o to żeby ktoś mnie "prowadził za rączkę i pokazywał gdzie kliknąć" tylko proszę o przykład kodu, który spowoduje to, o co prosiłem. Czy komuś ręka odpadnie tylko dlatego, że poda mi kod? Ludzie! Jeśli ktoś się martwi o to, że jeśli dostanę gotowy kod to nie zrozumiem nic z tego i to mi nic nie da to co wam szkodzi? To MI to nic nie da, a nie WAM...Żal..:/

To chyba jasne że wynika to głównie z tego że mało jest ludzi którzy robią GUI w C++/CLI, stąd masz więcej wymądrzania się niż rad.
Dlatego odradzam takie rozwiązanie - bo o ile do popularnych kombinacji będziesz miał mnóstwo przykładów, o tyle w C++/CLI będziesz musiał niestety sam do wszystkiego dochodzić.

Ja Ci osobiście nie mogę pomóc, chociaż chciałbym - po prostu nigdy nie programowałem w C++/CLI ani nie planuję tego robić. To osobny język i sto razy wolałbym się nauczyć nowego - C# - niż próbować coś zrobić w takim "dziwnym" C++. Dlaczego dziwnym - to już sam do tego dojdziesz.

Możesz spróbować z TabControl + zmiana strony (SelectedIndex) na wciśnięcie klawisza (Button).
Ale nie wiem czy da radę schować nazwy zakładek - w Delphi się dało.

Przykład obsługi dla dwóch zakładek:

        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                   this->tabControl1->SelectedIndex = (this->tabControl1->SelectedIndex + 1) % 2;
                 }
0

Widzę, że na tym forum nie ma nikogo kto mógłby mi pomóc tylko jest kilka osób, które się wymądrzają

Bo dstałeś odpowiedź - zainteresuj się właściwością Visible. Jest w każdej kontrolce.
Zastanów się, jak to można wykorzystać.

Niestety, na tym forum niektóre pytania (właśnie o C++/CLI, ale też np. devc++, albo tzw. "variable-length arrays") kończą się natychmiastowym niemerytorycznym flejmem.

Musisz nauczyć się wydobywać informacje z ogólnego szumu...

1

Dobra sorry za ten wybuch ale to było po prostu skutkiem mojej zwyczajnej bezradności. Siedziałem nad tym już dobre kilka godzin i naprawdę nie miałem pomysłu jak to można zrobić (stąd prośba o gotowy kod) dlatego zwróciłem się o pomoc do Was. Myślę, że teraz jakoś ruszę z miejsca. Sorry i dzięki :)

0

Gotowego kodu nie ma wielkiego sensu dawać, bo 90% tego trzeba po prostu wyklikać w IDE, samego kodu obsługującego takie przełączane(pisanego ręcznie) to może pięć linijek.
Już trochę osób Ci to napisało. Lepiej nie zabieraj się za C++\CLI(przynajmniej nie jako pierwsze podejście do okienek). Żeby coś sensownie w tym napisać wypada znać C++, to co dodaje CLI i do tego C#. C# choćby po to, że większość przykładów Windows Forms i innych rzeczy z .Net jest właśnie w tym języku i trzeba się nauczyć jak to zamieniać na C++\CLI co nie koniecznie jest trywialne.

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