Visual C++ programowanie okienkowe

0

Cześć.

Mam pytanie. Otóż uczę się programować w c++ z wykorzystaniem okienek z książki od Zera do Gier Kodera. I tam niby jest wszystko z wykorzystaniem Windows API , wybierając w Visualu "Projekt systemu windows32". Jednak Visual posiada też "Aplikacja Formularzy systemu windows", która z tego co zauważyłem udostępnia między innymi okno, w którym się projektuje windows. I teraz moje pytanie : Czy ja się uczę programować okienka jakąś starą techniką, która teraz jest przeżytkiem, czy to windows form służy do czegoś innego? Jest dość ważne dla mnie pytanie, bo programowanie z WInaPi jest dla mnie logiczne, czego nie mogę powiedzieć o tym WIndows Form.

0

Jeżeli faktycznie tworzysz jakąś grę w DirectX, to stworzenie okienka bezpośrednio w WinAPI nie jest wcale przeżytkiem.
Jeżeli chodzi ci o wykorzystanie jakiś gotowych kontrolek, frameworków, to racja, pisanie bezpośrednio w WinAPI nie jest zbyt wygodne. W "dzisiejszych" czasach masz wiele możliwości pod tym względem. Microsoftowe, tradycyjne MFC, ale i Windows Forms pod .NET Framework (do którego polecam raczej C#, masa osób zaczyna naukę C++ od C++/CLI i zwyczajnie wymięka, bo oprócz wskaźników i referencji pojawiają się uchwyty) czy przenośne toolkity jak QT.

0

Trochę mnie zmartwiłeś tym postem, bo okazuje się, że to co rozumiem już jest przeżytkiem. To tak w skrócie - co jest w dzisiejszych czasach standardem i na topie do tworzenia aplikacji GUI ii czy są do teog jakieś książki?

0

Ja też zacząłem naukę programowania od C++ i wciąż się uczę już z jakiś miesiąc z Symfoni C++ Standard to wskażniki naprawdę zniechęcają.
Jest to obszerny dział trudny do opanowania a szczególnie prace z tymi wskażnikami myślę czy by nie ominąć tych wskażników i uczyć się dalej klas a potem wrócić do wskażników.

0

U mnie jest inaczej. Znam składnię i budowę języka C++ i teraz planuje tylko tworzyć aplikacje z interfejsem GUI, toteż zacząłem czytać dział aplikacje okienkowe, ale tam jest wszystko tworzone samodzielnie z wykorzystaniem windows API. Dlatego chciałbym się dowiedzieć co jest na topie do tworzenia aplikacji okienkowych i zacząć się tego uczyć

0

Dość popularny framework to Qt, ale jest on trochę "inny" więc musisz sam się przekonać czy ci odpowada. Ma za to chyba najlepsze dostępne darmowe narzędzie do tworzenia GUI (QtCreator)

0

Hmm, a coś takiego zaawansowanego pod względem możliwość, a jednocześnie dość prostego w obsłudze? Moze być płatne.

0

Och żebyśmy mieli jasność, QtCreator jest bardzo prosty w obsłudze, zresztą jaki to problem wypróbować? ;) Chodzi o to że Qt jest baaardzo rozbudowanym frameworkiem, a nie samą biblioteką do okienek.

0

a Qt według Ciebie jest trudny w obsłudze? Ma najlepszą dokumentację jaką widziałem, choć niestety miałem mały kontakt z innymi bibliotekami GUI, a ponadto komendy są bardzo intuicyjne, jeśli tylko zna się angielski. http://doc.qt.nokia.com/4.6/index.html

0

Szczerzę mówiąc to niebardzo wiem co i jak w tym wszystkim działa. Zobaczymy, może z czasem uda mi się nauczyć tym posługiwać. Nauka QT przypomina jakby nauke nowego języka.

0

http://doc.qt.nokia.com/4.1/tutorial-t1.html

Gorąco polecam ten tutorial. Sam się z niego uczyłem i wydaje mi się, że na jego podstawie można opanować wszystko co jest potrzebne aby rozpocząć pracę z Qt. Do tego, jak wejdziesz sobie u siebie na komputerze w Start->Programy->Qt by Nokia->Examples masz masę programów z kodami źrodłowymi, które bardzo się przydają przy późniejszych pisaniach aplikacji - można sobie podejrzeć jak to jest zrobione przez profesjonalistów.

0

Dziękuje, jutro się tym zajmę, ale wcześniej mam kilka pytań. Czy w dzisiejszych czasach korzystanie z programów tego typu do tworzenia GUI jest podstawą, czy niektórzy tak robią?
Czy w tym QT można normalnie łączyć " zwykły" kod c++, czyli np napisać przeglądarkę internetową lub inny program, który wykorzystuje biblioteki sockets itp? I ostatnie - o co chodzi z tym public slots i innymi udziwnieniami, które są podświetlone jako słowa kluczowe? Jesli nikt nie odpowie to sam będę musiał jutro znaleźć :P.

0
  1. Tak, korzystanie z tego typu programów do tworzenia GUI jest podstawą.
  2. Tak, można łączyć "zwykły kod"
0

To może jeszcze jedno szybkie pytanie - programowanie okienek na w tym programie działa na tej samej zasadzie co w Winapi? Mozna pobierać uchwyty do nich? Zmieniać ich nazwę (zostały stworzone w designerze) za pomocą Winapi?

0

Nie wiem czy do końca o to Ci chodzi, ale Qt jest zaprojektowane w ten sposób, żeby wszystkie niezbędne operacje można było wykonywać używając odpowiednich metod danych klas, więc myślę, że ingerencja WinApi nie będzie w tym wypadku konieczna.

0

Uruchamianie kroków budowania dla projektu nienazwany...
Uruchamianie "d:/qt/2010.05/qt/bin/qmake.exe" C:/Documents and Settings/Właściciel/Pulpit/QTTTTTTTT/nienazwany/nienazwany.pro -r -spec win32-g++
Cannot find file: c:\Documents and Settings\Właściciel\Pulpit\QTTTTTTTT\nienazwany\nienazwany.pro.

Proces "d:/qt/2010.05/qt/bin/qmake.exe" zakończył się kodem wyjściowym %2.
Błąd podczas budowania projektu nienazwany (produkt docelowy: Desktop)
Podczas wykonywania kroku budowania "QMake"

Moze ktos wie o co chodzi? nienazwany.pro w tym folderze się znajduje.

0

ja do kompilacji używałem takich komend:

qmake -project
qmake
nmake release-all

Najlepiej wrzuć sobie plik qmake.exe do folderu z projektem i stamtąd uruchamiaj. W jakim środowisku piszesz program?

0

Na razie próbuję się z tym wszystkim zapoznać, co i jak, dlatego wszystko robię w tym QT Creator.

0

Ja osobiście piszę aplikacje z użyciem Qt w MS Visual Studio 2008 Express Edition. Bardzo prosta obsługa. Jakby co, tu podaję link do tutoriala, jak skonfigurować sobie Qt pod visuala.

http://rajorshi.net/blog/2009/01/using-qt-with-msvc-express-2008/

0

Ok, niby skompilowałem swój pierwszy program w QT, ale ciagle brakuje jakichś bibliotek - aktualnie QtCored4.dll . Czy tak powinno być czy coś źle robię? Trochę głupia sprawa, bo do tej pory wszystko mi ruszało,a prosty program q QT juz nie chce.

0

Tak, wszystkie programy w Qt, do uruchomienia wymagają pewnych bibliotek (W zależności od tego, jakich użyjesz w projekcie). Domyślnie, wymagane są dwie biblioteki - QtCore.dll oraz QtGui.dll (ew. mingw10.dll). Aby program mozna było uruchomić, te w lub 3 pliki muszą się znajdować w tym samym folderze co plik wykonywalny.

Oczywiście w kompilatorze można ustawić kompilację statyczną i wtedy biblioteki będą dołączane do pliku exe, ale to raczej jest rzadko stosowane.

0

Statyczne linkowanie QT ma jeszcze jeden plus: możesz wybrać to, co chcesz i między innymi dzięki temu zmniejsza się waga biblioteki. Kompilowałem ostatnio statycznie QT w Visual Studio 2010 i aplikacja z QT core i gui oraz runtime VC++, skompresowana UPXem, zajmuje 1.77mb!
Jeżeli tworzysz jakąś mniejszą aplikację, to takie rozwiązanie jest wręcz idealne, ale jeżeli możesz użyć instalatora, to lepiej będzie się zdecydować na biblioteki dynamiczne, zarówno QT jak i runtime (mniejsze wagowo uaktualnienia, jeżeli w runtime zostanie wykryta luka to Microsoft będzie mógł ją załatać poprzez Windows Update itd).

0

Dzięki, wszystko się skompilowało i pierwszy prosty program mam za sobą. Istnieją jakieś przeszkody przy korzystaniu z kilku bibliotek jednocześnie? Np QT z Boostem?

0

Qt działa z Boostem, nie miałem z tym żadnych problemów. Wróć. Miałem drobny, Boost posiada makro BOOST_FOREACH, które dokumentacja poleca re#definiować sobie do po prostu foreach. To się nie uda, bo Qt ma swojego foreacha. Żeby użyć tego z Boosta, trzeba wyłączyć foreacha z Qt albo pisać BOOST_FOREACH zamiast foreach.

Większe kłopoty miałem ze skompilowaniem programu w Qt pod .Net Frameworka – trzeba było trochę porzeźbić z flagami dla kompilatora i poprawić jedną funkcję w źródłach Qt (jest to i tak bug, zastanawiam się czy nie zgłosić tego). Ale poszło: C++/CLI, Qt i Boost jednocześnie.

(inna sprawa że Qt i .Net w jednym programie niewiele mają sensu, bo obie te biblioteki są podobnie wszechstronne)

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