Aplikacja okienkowa w C++ - co wykonać?

Witam,

studiuję informatykę. Jestem na drugim roku. Mam do wykonania projekt w C++.

Myślałem nad jakimś mocno rozbudowanym kalkulatorem, lub edytorem tekstu. 

Na jakim poziomie jest moja znajomość C++? Umiem programować w C++, ale nie używałem jeszcze jakoś specjalnie obiektowości. Napisałem kilka prostych aplikacji w MFC. Po za tym używałem jedynie konsoli.

Projekt chcę wykonać jako aplikację okienkową. Czy polecacie pisać ją używając MFC? Wymogiem jest bym używał C++. Tutaj mam dylemat. Czy mam pisac w kompletnie czystym C++ czy też mogę użyć MFC? WinApi wydaje mi się ogromnie skomplikowane…

Koledzy, doradźcie mi jak się do tego zabrać. Może macie jakieś ciekawe pomysły na projekt?

 

Pozdrawiam wszystkich :slight_smile:

W standardzie C++ nie ma obsługi okienek - musisz używać zewnętrznej biblioteki lub API systemu operacyjnego.

Najlepiej zapytaj prowadzącego czy są jakieś ograniczenia w kwestii czego możesz używać.

A jaką bibliotekę dobrą do nauki i mającą ciekawe możliwości polecasz?

Qt

MFC nie jest złe, to tylko wrapper na windows API.

A co powiecie o Windows Form?

Jeśli chcesz okienkową to możesz ją zbudować w c++ builder. Jeśli dobrze pamiętam to c++ builder 6 jest darmowy, bo twórcy udostępnili klucz do pełnej wersji.

Chciałbym zaznaczyć, że jakiekolwiek narzędzia RAD nie uczynią z Ciebie programisty, a obecnie się odchodzi od programowania w RAD.

Tu nie chodzi o to, aby zrobić z niego programistę. Może przecież w builderze zobaczyć, jak aplikacja będzie wyglądać itp. Jeśli nie zależy mu na wyglądzie to może bardziej skupić się na innych problemach aplikacji.

Zawsze lepiej iść w coś niezależnego od systemu. Tak jak @enedil polecam Qt. Możesz przy tym pobrać cały zestaw do tworzenia aplikacji okienkowych z tą biblioteką. Wtedy okienko tworzysz w klikany sposób, a w edytorze oprogramowujesz elementy. Obiekty musisz ogarniać, jeżeli chcesz tworzyć programu GUI, w jakiejkolwiek użytecznej bibliotece.

A jak polecasz zacząć pisać w Qt?

Plus chciałbym uczyć się czegoś co mi się potem przyda. Projekt muszę zrobić w c++. A więc w grę wchodzi jakaś ciekawa i rozwojowa biblioteka. WindowsForm mi się podoba, ale z tego co czytam powoli się od niej odchodzi. Czyli zostaje Qt?

Najprościej chyba będzie zainstalować Qt Creator (IDE dedykowane do Qt) i poczytać tutoriale do Qt.

Musisz też wiedzieć, że Qt dodaje kilka rozszerzeń do języka C++ (część jest zrobiona przy użyciu zwykłych makr preprocesora, a cześć wymaga dodatkowego preprocesora MOC).

 

Windows Forms jest biblioteką .Net, więc żeby z niej korzystać powinno się raczej pisać w jakimś języku .Net (np. C#). C++ nie jest językiem .Net. Jest co prawda taki wynalazek jak C++/CLI ale należy go raczej traktować jako wywodzący się ale osobny od C++ język, poza tym C++/CLI służy raczej do pisania wrapperów między kodem .Net a natywnym niż samodzielnych aplikacji.

Cóż… żeby zacząć, trzeba po prostu zacząć. Może to i głupio brzmi, ale tak jest. Pobierz środowisko, zacznij czytać jakiś kurs. Jeżeli sobie poradzisz, to czytaj dokumentację (rozumiem, że angielski dobrze już znasz). Najważniejsze, żebyś programował i jakoś będzie szło do przodu. 

Jeżeli będziesz chciał tworzyć aplikacja GUI, to Qt ci się przyda. WindowsForms jest tylko na Widowsa. Qt możesz używać na Windowsie, Linuksie, Androidzie, OSX, iOS i Windows Phone. Możesz przy tym programować w C++ lub Javie. Ogółem, gdy zrozumiesz Qt, to poznanie określonego, potrzebnego w danym czasie modułu, będzie sprowadzało się jedynie do spojrzenia do dokumentacji.

Nie będę oryginalny i również polecę Ci Qt :slight_smile: Qt Creator to potężne narzędzie, w którym w wygodny sposób zaprojektujesz całe GUI, a następnie zaprogramujesz. Mogę polecić Ci wideotutoriale p. Mirosława Zelenta https://www.youtube.com/playlist?list=PLOYHgt8dIdozvOVheSRb_qPVU-4ZJA7uB (od 7 odcinka). Co prawda omawiany jest Borland C++ Builder ale nie masz uczyć się obsługi danego programu, a pewnych metod postępowania. Sam zresztą od tych poradników zacząłem poznawać Qt Creator. Potem pozostaje już tylko czytanie dokumentacji :slight_smile: