[C++] Tworzenie aplikacji okienkowej

Witam.

 

Od jakiegoś czasu zacząłem naukę C++, korzystając przy tym z książki Jerzego Grębosza “Symfonia C++ Standard”. Póki co jestem z niej zadowolony, mimo że nie przeczytałem jej jeszcze do końca to z miejsca mogę ją polecić innym początkującym.

-(Używam środowiska Visual Studio C++ 2013)-

 

Chciałbym dowiedzieć się kilku informacji na temat tworzenia aplikacji okienkowych od osób, które miały już z tym do czynienia.Głównie chodzi mi oto, że póki co piszę jakieś malutkie programiki ( jeżeli to “coś” można nazwać programem ), które działają jako aplikacje konsolowe. Jednak muszę stworzyć program do obsługi portu rs232 ( odbieranie i wysyłanie danych ). Wysyłanie danych w formie aplikacji konsolowej działa, jednak chcę to przenieść do jakiegoś “okna” przypominającego program. W tej chwili interesuje mnie stworzenie suwaka przesuwającego się po osi Y, przy wybraniu odpowiedniej pozycji i np. kliknięcia przycisku “OK”, “Zatwierdź” etc. ma zostać wysłana jakaś liczba, np. “30” . Podobny program działa jednak jako aplikacja konsolowa ( wpisuję do uruchomionego programu np. liczbę, która wyświetla się kolejno na wyświetlaczu urządzenia podłączonym poprzez rs232.

 

Na sam początek chciałbym pobawić się taką aplikacją okienkową i np. po kliknięciu przycisku, w polu tekstowym ma się wyświetlić jakiś napis.

Tworząc aplikacje konsolową, najprostszy program do wyświetlania napisałbym tak:

 

#include <iostream>
using namespace std;
 
int main()
{
  cout << "WIADOMOSC";
}

 

(Piszę ten  temat już z 50min i nie mogę zebrać myśli, przepraszam za możliwość rozrzucenia różnych informacji po całym poście )

 

1.W zakładce C++ nie ma opcji “Windows Form Application”, jednak wydaję mi się, że taka opcja kiedyś ( w starszych wersjach programu ) była. Jedyne co pozostaje mi od wyboru to zakładka Visual Basic lub C#, w których to mam możliwość wybrania “Windows Form Application” . Rozumiem, że C# to inny język niż C++, czy mam możliwość stworzenia aplikacji okienkowej w czystym C++ ?

 

  1. Jeżeli nie, to którą z tych opcje lepiej wybrać ?

 

3.Czy mogę używać tych samych poleceń z C++ ( mimo, że znam ten język bardzo słabo ), których używałem do pisania aplikacji konsolowych, aby napisać jakikolwiek program “okienkowy” ?

 

4.Przypuszczam, że to raczej wątpliwa sprawa, więc jak bardzo polecenia się od siebie różnią i czy mam możliwość jakiegoś takiego “przeskoku” z aplikacji konsolowych na okienkowe znając tylko trochę samego C++ ? Czy może muszę znaleźć sobie jakieś inne “pomoce” (strony internetowe, książki) do wyświetlania,wysyłania, odbierania danych w aplikacji okienkowej ?

 

  1. Czy macie dla mnie jakieś rady ?

 

Z góry dziękuję za pomoc.

Tak, kompletnie inny.

Tak, choć musisz użyć niestandardowych bibliotek, w bibliotece standardowej C++ nie ma czegoś takiego jak okno.

Pod Windowsem możesz użyć WinAPI (uwaga: trochę topornie się pisze pod to), albo bibliotek typu wxWidgets czy Qt (wieloplatformowe).

Piszesz w C++ ale używasz funkcji dostarczanych przez używaną przez Ciebie bibliotekę do okienek.

Jak słabo znasz C++ to się go doucz. Polecam: http://xion.org.pl/productions/texts/coding/megatutorial/

Jak zdecydujesz się na którąś bibliotekę do okienek to poczytaj też tutoriale do tej biblioteki (w sumie możesz najpierw poczytać, żeby zdecydować, która będzie dla Ciebie przystępniejsza).

Zastanawiam się nad WinAPI lub Qt. Które biblioteki byś mi polecił ? Dodam, że póki co potrzebuje stworzyć coś przypominającego interfejs graficzny pod Windows używając C++ a w dalszej przyszłości przydałoby zrobić podobny interfejs pod Androida jednak jest to opcja bardziej “dodatkowa”. ( Głównie interesuje mnie windows)

Qt jest bardziej uniwersalne.

Pobrałem Qt Creator w wersji 5.2.1 i póki co sprawdzam jak ten program działa.

 

Czy idę w dobrą stronę chcąc stworzyć aplikację okienkową z jakimiś interaktywnymi elementami używając ( póki co… ) samego C++ ?

 

Korzystając z książki Jerzego Grębosza, tak jak to napisałem wcześniej, pisałem programy w Visual Studio C++ 2013. Czy VS C++ przyda mi się w jakiś sposób do stworzenia aplikacji okienkowej, skoro mam już Qt Creator ?

 

Nie oczekuję tutaj podania “wszystkiego jak na tacy”, choć może to tak wyglądać, ze względu na ilość moich pytań. Po prostu jestem ograniczony czasowo i nie chcę, aby spotkała mnie sytuacja w stylu … Zacznę robić jedno, jednak okaże się, że nie do końca oto mi chodziło i nie będę miał już czasu aby zrobić czy zacząć “to drugie” . Mam nadzieję, że wyjaśniłem to w miarę zrozumiale.

C++ Builder też jest całkiem fajny do tworzenia aplikacji. Masz bardzo wiele technologii, jednak nie zaczynałbym tego zbyt szybko, tak jak wspomniał o tym poprzednik.

 

http://pl.wikipedia.org/wiki/Przeci%C4%85gnij_i_upu%C5%9B%C4%87

Wciąż kombinuję coś w Qt Creator przy pomocy różnych tutoriali i swoich pomysłów, jednak muszę poczekać kilka dni na przyjście urządzenia, dzięki któremu będę mógł sprawdzić, czy program wysyłający dane do portu rs232 działa. Taka aplikacja działa w wersji konsolowej, jednak chce spróbować przenieść ją do “okna” i dodać trochę interfejsu. Póki co nie mogę dokładnie stwierdzić jaki program mi bardziej odpowiada.

To zależy od używanego kompilatora. Włącz Opcje w Qt Creatorze, następnie opcje budowy i zobacz co jest kompilatorem. Jeżeli MinGW, to możesz wyrzucić VS, jeżeli VS Compiler, to domyślasz się, że musisz VS zostawić.

Kompilatorem jest MinGW.

 

Siedzę już trochę czasu przy tym programie i wciąż nie do końca rozumiem jak on działa.

 

Czy kod jakiegoś programu z VS mogę przenieść do Qt ? Mam na myśli coś w stylu:

 

Kod z VS:

 

#include <iostream>
using namespace std;
 
int main()
{
  int x;
  cout << "Podaj liczbe x: ";
  cin >> x;
  cout << "Liczba x = " << x << endl;
 
  system("pause");
}

 

I załóżmy, że w Qt chcę zrobić coś w na wzór okna, w którym są dwa pola tekstowe, jedno na podanie liczby x, drugie na jej wyświetlenie no i jakiś przycisk, który powodowałby właśnie “zaakceptowanie” wpisanej liczby i wyświetlenie jej w drugim polu tekstowym. Samo tworzenie obiektów mniej więcej rozumiem, nie potrafię jednak dodać kodu, który wprawiłby aplikację w działanie.

Moim zdaniem ten kod nie ma nic specyficznego z VS. A od layoutu masz Designer.

Nie chodzi mi oto, że ten kod jest jakoś powiązany z VS, równie dobrze można go skompilować w DEV C++ czy czymkolwiek innym. Mam na myśli przerobienie takiego prostego kodu, który działa jako aplikacja konsolowa, na aplikację okienkową z przyciskiem i polem tekstowym.

 

@EDIT

 

Powoli zaczynam znajdywać odpowiednie dla mnie informację dotyczące napisania aplikacji okienkowej, więc kod napisany powyżej można puścić w nie pamięć. Gdyby ktoś jednak miał dla mnie jakieś rady dotyczące dodania,stworzenia interfejsu byłbym niezmiernie wdzięczny.

 

I czy aby na pewno powinienem próbować tworzyć coś poprzez Qt Creator czy spróbować czegoś innego ?

Usunięto to ten szablon w nowszych wersjach bo był mylący. Mimo to powinieneś mieć możliwość tworzenie aplikacji w Windows Form w C++ za pomocą Windows Form. 

Zrób wszystko jak na tej stronie:

http://www.bogotobogo.com/cplusplus/application_visual_studio_2013.php

Ewentualnie pobierz z tamtą projekt i odpal w VS2013 i go zmodyfikuj. 

Działa?

Jeśli chcesz robić w WinApi (odradzam) to polecam książkę Programming Windows (chyba 5 edycja) napisaną przez Charlesa Petzolda. W Polsce wydane pod nazwą ‘Programowanie Windows’ na chomiku są po polsku słabe OCR w txt, więc lepiej czytać po angielsku. Koleś też pisał książki o Windows From.

Jeśli się dopiero uczysz c++ to może lepiej jakbyś z niego zrezygnował i zaczął się uczyć C#.

Jeśli chcesz programować w androidzie to Java.