Gdzie jest dobre miejsce, aby rozpocząć programowanie GUI Dla windows? [zamknięte]

Mam doświadczenie w pisaniu aplikacji konsolowych i sieciowych klient / serwer w C i C++, ale prawie nic nie wiem o używaniu win32 visual API, MFC, Qt, wxWidgets, itp. Gdzie warto zacząć i w jakiej metodzie się specjalizować, aby być gotowym na przyszłość i solidnym?

Author: kassak, 2008-08-07

9 answers

Jest to dość szerokie pytanie, ponieważ programowanie aplikacji GUI w systemie Windows można wykonać na wiele sposobów.

Istnieją dwie główne części do tworzenia dowolnej aplikacji GUI: język i API/framework . Biorąc pod uwagę, że jesteś zainteresowany nauką tworzenia aplikacji GUI systemu Windows, język nie jest dla ciebie tak naprawdę punktem skupienia. Dlatego powinieneś wybrać język, który już znasz i pracować z frameworkiem lub API, który może być wykorzystany przez wybrany język.

Jeśli jeśli chcesz używać C, jesteś prawie ograniczony do samodzielnego radzenia sobie z API Win32, w takim przypadku czytanie Petzold lub Richter byłoby świetnym miejscem do rozpoczęcia. API Win32 może być dość zniechęcające, ale warto się tego nauczyć (imho). Istnieje wiele samouczków na temat Win32 w Internecie, i zawsze jest MSDN , z pełnym odniesieniem / przewodnikiem po Win32 API. Upewnij się, że obejmujesz nie tylko API, ale inne obszary, takie jak zasoby/okna dialogowe bloki konstrukcyjne dla Twojej aplikacji Win32.

Jeśli chcesz używać C++ masz wszystkie opcje, które masz podczas korzystania z C plus kilka innych. Polecam korzystanie bezpośrednio z API Win32, a następnie przejście do znanego frameworka, takiego jak MFC, Qt, wxWindows lub GTK, abyś mógł poświęcić mniej czasu pracy z kodem boilerplate i zamiast tego skupić się na pisaniu logiki aplikacji. Ostatnie 3 opcje, które wymieniłem, mają dodatkową zaletę, że są wieloplatformowe, więc nie musisz się martwić zbyt dużo o kwestiach związanych z platformą. Biorąc pod uwagę, że powiedziałeś, że chcesz pracować z Windows, zakładam, że jesteś chętny, aby skupić się na tym, a nie cross-platform -- więc idź z MFC, ale spędź trochę czasu z Win32 API najpierw zapoznać się z niektórymi pojęciami.

Kiedy mamy do czynienia z MFC i API Win32, warto spróbować dobrze zrozumieć terminologię przed napisaniem kodu. Na przykład, musisz zrozumieć, czym jest pompa message Pump i jak to działa. Musisz wiedzieć o pojęciach takich jak "owner-drawn controls" i subclassing. Kiedy zrozumiesz te rzeczy (i nie tylko), łatwiej będzie Ci pracować z MFC, ponieważ używa podobnej terminologii w swoich interfejsach klasowych(np. musisz wiedzieć, co oznacza "Przetłumacz wiadomości", zanim zrozumiesz, jak i kiedy używać PreTranslateMessage ).

Można też użyć Managed C++ do pisania aplikacji. NET GUI, ale czytałem w kilku miejscach to zarządzane C++ nie było tak naprawdę przeznaczone do użycia w ten sposób. Zamiast tego powinien być używany jako brama pomiędzy kodem natywnym / niezarządzanym a kodem zarządzanym. Jeśli używasz. NET, najlepiej jest użyć języka. NET, takiego jak VB.NET lub C # do budowania GUI.

Więc jeśli masz zamiar używać. NET, obecnie masz do wyboru WinForms Biblioteka, lub WPF. Osobiście uważam, że traciłbyś czas na naukę tworzenia aplikacji WinForms biorąc pod uwagę, że WPF jest zaprojektowany, aby go zastąpić. Z czasem WPF stanie się bardziej zapobiegliwy i Winforms najprawdopodobniej umrze. WPF ma znacznie bogatszy zestaw API i nie cierpi z powodu wielu ograniczeń, które ma Winforms. Jeśli jednak wybierzesz tę trasę, bez wątpienia będziesz musiał nauczyć się XAML, który jest językiem znaczników, który napędza aplikacje WPF. Ta technologia zbliża się do wieku i jest wiele świetnych miejsc, aby się o niej dowiedzieć. Po pierwsze są takie strony jak LearnWPF i DrWPF które mają naprawdę świetne artykuły. Po drugie, istnieje mnóstwo jakości Książki na temat .

Podsumowując, gdy już wybierzesz swój język i technologię, ścieżka jest całkiem łatwa. Po prostu weź książkę lub dwie, poczytaj blogi, zapoznaj się z próbkami kodu.. i co najważniejsze ... napisz kod. Pisz dalej, popełniaj błędy i ucz się na nich.

Jako ostatnia uwaga...

In innymi słowy, Silverlight. Jeśli nie chcesz iść na MS route możesz dać Adobe Flash / Flex wygląd zobacz. Zarówno Silverlight, jak i Flash / Flex budują RIA. One dni biura jak aplikacje są numerowane

W ogóle się nie zgadzam. Silverlight nie jest tym samym co WPF. Silverlight jest specyficzny dla sieci i ma tylko podzbiór funkcji WPF. Biorąc pod uwagę, że pytanie dotyczy aplikacji GUI systemu Windows, Aplikacje Flash / Flex Rich Internet nie są tak naprawdę odpowiednią sugestią. Nie zgadzam się też, że dni bogatych aplikacji klienckich (np. office) są w ogóle policzone.

Mam nadzieję, że to pomoże. Powodzenia:)

 44
Author: OJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 11:24:54

Nie wiem, czy nazwałbym to dobrym miejscem na początek, ale jeśli chcesz być gotowy na przyszłość, spójrz na Windows presentation foundation , która jest zbudowana w całości na potrzeby programowania GUI Dla windows

 6
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 03:08:35

Moje pierwsze doświadczenie w pisaniu prostych aplikacji GUI Dla Windows było z C# i Visual Studio. Interfejs GUI-building jest prostym rozwiązaniem typu przeciągnij i upuść, które generuje szkieletowe metody na podstawie potencjalnych działań użytkownika. Zrobiłem tylko dość podstawowe programowanie z tym, ale wyobrażam sobie, że byłoby to doskonałe miejsce, aby zacząć uczyć się podstaw i rozszerzyć na bardziej zaawansowane możliwości, jak idziesz.

 4
Author: Justin Bennett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 03:47:41

Istnieje wiele samouczków online Win32:

Http://www.zeusedit.com/forum/viewtopic.php?t=1218

Jest wiele kompilatorów do wyboru:

Http://www.zeusedit.com/forum/viewtopic.php?t=238

Polecam również uzyskanie dokumentacji Borland Win32 SDK w formacie pliku WinHelp:

Http://www.zeusedit.com/forum/viewtopic.php?t=7

Obejmuje tylko podstawowe podstawy Win32, ale podczas uruchamiania może to być pomocne, ponieważ jest mniej zniechęcające i mniej nadęte niż MSDN.

 3
Author: jussij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-27 23:20:25

Nigdy nie przejechałbym Silverlight, Flash / Flex ani żadnej podobnej trasy. Wygląda ładnie, ale głównym problemem jest to, że kod silnika, który go uruchamia, jest całkowicie zamknięty i kontrolowany przez jedną firmę. Weźmy na przykład 64-bitowe wersje obu z nich. Jeśli pojawi się nowa platforma, nie będziesz mógł przenieść do niej istniejącego kodu.

 1
Author: Milan Babuškov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 10:13:59

W przypadku aplikacji biznesowych Windows Forms jest bardzo dojrzały. Zapewnia łagodną ścieżkę od automatycznego generowania dużo dla Ciebie do umożliwienia drobnoziarnistej kontroli i toczenia własne. Istnieje mnóstwo wysokiej jakości kontroli stron trzecich i duży zbiór przykładów, dokumentów itp. Trudno napotkać problem, którego nie rozwiązał ktoś inny. Bardzo polecam nabycie trochę wiedzy o Win32 (np. Petzold), ponieważ Framework WinForms żyje na nim.

Nie mam Doświadczenie WPF, ale z przykładowych aplikacji, które widziałem, wygląda to na dobry wybór dla aplikacji, których interfejsy korzystałyby z bardziej graficznych metafor. Więc jeśli robisz aplikację bankową, prawdopodobnie nie warto dodatkowego projektu. Ale jeśli robisz, powiedzmy, aplikację do zarządzania magazynem, można ją ulepszyć, upuszczając ładne pudełka do ładnych pojemników.

@ StephenCox: zła odpowiedź na złe pytanie. OP pyta o aplikacje desktopowe, a ponadto WPF != Silverlight.

 0
Author: Aidan Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 12:23:30

Dla prostego punktu wyjścia, aby skupić się na naturze "napędzanej zdarzeniami" zasadniczo wszystkie frameworki są tworzone wokół look at FLTK.

Oto kilka szybkich filmów startowych Link

Do użytku profesjonalnego polecam Qt, drogie, ale często warto w sytuacjach komercyjnych.

 0
Author: epatel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 13:26:07

Ponieważ jesteś już zaznajomiony z C i C++, polecam naukę pisania prostej aplikacji Windows GUI przy użyciu książki Charlesa Petzolda. To daje podstawowe zrozumienie, jak działa System Windows. Dobrze jest zrozumieć, że większość wszystkiego, co widzisz, jest oknem (na przykład przycisk jest oknem) i że te okna odpowiadają na wiadomości. Nie poświęciłbym jednak dużo czasu na to i niekoniecznie musisz to zrobić najpierw, jeśli zamierzasz wybrać WPF. I po prostu myślę, że dobrze jest mieć podstawowe zrozumienie tego.

Był ostatnio dobry podcast na. Net o nazwie " Kate Gregory rozwija w C++ dla Visty!" tam ona zaleca, aby ktoś zaczynający teraz nie powinien używać / uczyć się MFC (nawet jeśli został on niedawno zaktualizowany).

Jeśli chodzi o przygotowanie się na przyszłość, musisz nauczyć się WPF, ale nie jest on jeszcze kompletny, więc w zależności od rodzajów aplikacji po stronie klienta, które chcesz utworzyć, prawdopodobnie będziesz musiał się nauczyć WinForms. Większość ludzi nie używa WPF jeszcze, więc jest to dobry czas, aby rozpocząć naukę. Myślę, że łatwiej będzie Ci nauczyć się C# zamiast robić zarządzany kod z C++.

 0
Author: bruceatk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 13:59:12

Najpierw popraw podstawy. Najlepszy tutorial jaki znalazłem to: http://winprog.org/tutorial/start.html

Po tym, chociaż strona główna jest nienawistnie niesmaczna, strony z samouczkami są dobre pod względem treści i estetyki: http://www.tenouk.com/cplusmfcdotnet.html

No to oczywiście jest MSDN .

 0
Author: Nav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-29 08:56:23