Aplikacje okienkowe C++ - które IDE?

0

Witam.
Na stronie MS jest dostępna darmowa wersja Visual Studio C++ Express 2012 (a dokładnie wersję Express for Windows Desktop). Pobrałem ją dzisiaj i troszkę zagubiłem się po mega-długiej instalacji.
Miałem przez chwilkę dostęp do Visual Studio C# Express 2010. Były tam dostępne listy Komponentów, Eventów, mogłem normalnie stworzyć projekt aplikacji okienkowej, powrzucać jakieś labele, przyciski i wszystko działało. Jeśli chodzi o VS C++ E 2012 to nie za bardzo wiem jak to ugryźć. W Toolbarze nie ma żadnych komponentów, nie widzę eventów do wykorzystania, projekt tworzony ma automatycznie jakieś podstawowe menu i nie bardzo wiadomo nawet jak je podglądnąć bez kompilacji i odpalenia programu. Nigdy wcześniej nie miałem styczności z takim kombajnem. Trzeba najpierw to jakoś skonfigurować? A może jest gdzieś jakiś dobry opis dla osób początkujących? W Internecie jest bardzo dużo tutoriali do wersji 2010, natomiast ciężko znaleźć coś dobrego do 2012.
Byłbym wdzięczny za wszelkie porady w tej sprawie.
Proszę o nie mieszanie mnie z błotem od razu :) Tak jak napisałem, pierwszy raz mam styczność z takim wielkim kombajnem (100 lat temu korzystałem trochę z Delphi i Buildera C++ ale nie przypominam sobie abym miał takie problemu przy samym starcie).
Pozdrawiam.

1

Na stronie MS jest dostępna darmowa wersja Visual Studio C++ Express 2012 (a dokładnie wersję Express for Windows Desktop)

Bez C++ w nazwie. Wersja ta zawiera C++, C# i Visual Basic.

Miałem przez chwilkę dostęp do Visual Studio C# Express 2010.
Zdecyduj się, jaki chcesz język. C++ czy C#?
Oczywiście twoje znajome komponenty będą, jeśli wybierzesz projekt w C#.

Pod C++ w zasadzie nie ma gotowej biblioteki do GUI, przynajmniej w wersji Express.
Można co prawda użyć czegoś co się nazywa C++/CLI, dialekt C++ w którym ma się dostęp do .NET Frameworka.
Pisanie w tym aplikacji okienkowej jest jednak z nie do końca zrozumiałych dla mnie powodów niezalecane.
Na dodatek w wersji 2012 zostało utrudnione do tego stopnia, że większość myśli, że jest już niemożliwe.
Tak naprawdę 2012 obsługuje Windows Forms dla C++/CLI, brakuje tylko opcji do tworzenia nowego projektu ;-)

Ale jeśli chcesz się uprzeć, to:

• utworzyć projekt typu CLR Console Application, z domyślnymi ustawieniami,
PROJECT | Add New Item, UI, Windows Form
PROJECT | Properties (na samym dole), kliknąć po lewej na Configuration Properties
• u góry ustawić Configuration: All Configurations
• po lewej rozwinąć Linker | Advanced, i w polu Entry Point wpisać main
• w zakładce Linker | System zmienić Subsystem na WINDOWS
• plik z funkcją main() zastąpić taką treścią (w miarę potrzeby poprawić nazwę formy i namespace'a):

#include "stdafx.h"
#include "MyForm.h"
using namespace ConsoleApplication5;

[STAThread]
int main(array<System::String ^> ^args)
{
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false);
	Application::Run(gcnew MyForm());
	return 0;
}

Ale serio, lepiej po prostu napisać w C#.

W Internecie jest bardzo dużo tutoriali do wersji 2010, natomiast ciężko znaleźć coś dobrego do 2012.
Główna różnica to to, że wersja 2012 jest brzydka. Mimo to, tutoriale w 99% powinny działać.

0

Aktualnie zgłębiam tajniki C/C++ i dlatego myślałem, że i w tym języku będzie wszystko tak samo. Na VS 2010 do C# trafiłem przypadkiem i miałem okazję poklikać parę minut. Całkiem mi się to spodobało.

Pisanie w tym aplikacji okienkowej jest jednak z nie do końca zrozumiałych dla mnie powodów niezalecane. Na dodatek w wersji 2012 zostało utrudnione do tego stopnia, że większość myśli, że jest już niemożliwe.

Czyli według Ciebie da się to ominąć i zrobić ręcznie i osobiście nie widzisz przeciwwskazań do takiej praktyki?

Ale serio, lepiej po prostu napisać w C#.

Dlaczego lepiej? Tak teraz czytam o różnicach między C++ i C# i nie jest tak strasznie chyba. Są jakieś konkretne ku temu powody?

W Internecie jest bardzo dużo tutoriali do wersji 2010, natomiast ciężko znaleźć coś dobrego do 2012.Główna różnica to to, że wersja 2012 jest brzydka. Mimo to, tutoriale w 99% powinny działać.

Fakt, mi osobiście z wyglądu też bardziej podoba się 2010. 2012 jest zbyt efekciarska jak na program, który ma być prosty i funkcjonalny. Czy oprócz brzydoty i utrudnień są jeszcze jakieś większe zmiany? Może lepiej pracować na sprawdzonym 2010? O ile tam nie ma takich trudności z C++.

1

C++ i C# to są dwa kompletnie różne języki i jest więcej różnic niż podobieństw między nimi. Jeżeli korzystałeś wcześniej z VS 2010 Express to nie miałeś dostępu do klikania GUI w C++. Taka możliwość jest w C++\CLI, ale skoro nie znasz .Net i C#, a do tego pewnie nie najlepiej C++ to może być ciężko.

Dlaczego w C# jest lepiej? Bo jest dużo wygodniej i prościej niż w C++\CLI. Przy C++\CLI łączenie kodu natywnego z zarządzanym nie jest takie trywialne.

1

Czyli według Ciebie da się to ominąć i zrobić ręcznie i osobiście nie widzisz przeciwwskazań do takiej praktyki?
Opisane kroki to dokłanie to co robiły poprzednie wersje automatycznie. Przeciwwskazań brak, przynajmniej jeśli chodzi o wersję 2012. O przyszłych nie będę się wypowiadał.

Może lepiej pracować na sprawdzonym 2010? O ile tam nie ma takich trudności z C++.
Są większe, bo w VS2010 nie działa podpowiadanie składni w C++/CLI.
Działa natomiast w VS2005 i 2008, i nie ma cyrków z tworzeniem nowego projektu, ale tych Expressów nie ma już do ściągnięcia za darmo ze strony Microsoftu.
Ostatnie zdanie to tzw. suspiciously specific denial ;-)

Dlaczego lepiej? Tak teraz czytam o różnicach między C++ i C# i nie jest tak strasznie chyba. Są jakieś konkretne ku temu powody?
Dlatego, że aby napisać program GUI w C++/CLI, to trzeba znać zarówno standardowe C++ jak i C#. A wtedy pojawia się pytanie, dlaczego po prostu nie zostać przy C# ;-)

Visual Studio po prostu nie bardzo nadaje się do łatwego pisania programów GUI w języku C++.
Dostępne masz WinAPI, które jest trudne (to jest właśnie to, co opisujesz jako „projekt tworzony ma automatycznie jakieś podstawowe menu”).
Do WinAPI jest rozwlekły opis w Helpie (naprawdę warto go zainstalować i chociaż przejrzeć spis treści!) i na msdn.microsoft.com.
Jest też trochę bardziej graficzne MFC, które jest tylko trochę mniej tragiczne od WinAPI, ale nie ma go w edycji Express :-(

Są różne zewnętrzne biblioteki jak WxWidgets, Gtk+, Qt – ale samo ich zainstalowanie wymaga osobnych tutoriali...

0

Rozumiem. Faktycznie wygląda na to, że nie ma sensu się bawić w Visual Studio programując w C/C++. Może kiedyś przyjdzie czas, że przysiądę się do C#, ale na razie wolałbym zostać przy C/C++.
Polecacie może coś podobnego do C/C++? Kiedyś troszkę bawiłem się w Builderze, ale to było dawno temu. Maja teraz coś takiego darmowego jak VS Express? A może jakaś inna ciekawa opcja do aplikacji okienkowych? Oczywiście mam na myśli coś gdzie nie będzie trzeba ślęczeć godzinami i pisać okienek z palca jak w WinAPI (z tego co się doczytałem). Mam napisaną aplikację konsolowa i chciałbym ją przerobić na tryb okienkowy aby była łatwiejsza w użytkowaniu, stąd moje całe zainteresowanie tym tematem :) A nie mówię, ze na pewno fajnie by było nauczyć się tworzyć takie aplikacje. Teraz już raczej mało kto korzysta z aplikacji konsolowych.

2

Code Blocks + biblioteki wxwidget - piszesz w "czystym" c++, okienka wyklikujesz w edytorze wbudowanym w CB
Qt Creator + biblioteki Qt - piszesz w odrobinę wzbogaconym c++ o sygnały i sloty, okienka wyklikujesz w edytorze.

Co mogę o tym powiedzieć więcej? wxwidget jest ubogie w sumie ogranicza się tylko do komponentów okien ale za to szybkością ustępuje tylko winapi. Qt natomiast to wielkie framework który posiada klasy niemal do każdego zadania, tak, że praktycznie nie korzysta się z biblioteki standardowej, posiada ogromne możliwości stylizacji okien, ma tez dużo lepszą dokumentacje i społeczność niż wxwidget aczkolwiek trzeba się przyzwyczaić do stylu jej napisania. Jest odrobinę wolniejsza niż wx.

Nie musisz rezygnować z c++ żeby prosto robić okienka ;)

0

@mr_jaro, możesz napisać coś więcej o tym?:

Code Blocks + biblioteki wxwidget...
Qt Creator + biblioteki Qt...

Co oznaczają tylko komponenty okienkowe? Wydaje mi się, że prostszy sposób to doinstalowanie biblioteki wxwidget, bo nie trzeba się uczyć nic poza C++. Ale czy to wystarczy do swobodnego tworzenia aplikacji? Nie do końca wiem jakie jeszcze mogą być komponenty oprócz okienkowych, więc ciężko mi wyobrazić czy to by mi wystarczyło :) Które rozwiązanie sam wykorzystujesz / polecasz najbardziej?

2

Chodziło mi o to, że biblioteka wx to praktycznie same komponenty okienkowe czyli np przycisk a nie posiada wielu klas do innych zastosowań. W Qt natomiast jest prawie wszystko czyli oprócz wszystkiego co związane z wyglądem, oknami są też inne klasy np klasa do obsługi wszelkiego typu ustawień, od obsługi rejestru windowsowego przez pliki ini po jakiś ich specyficzny format, klasy do obsługi sieci czy też np silnik webkita (silnik używany do parsowania stron www przez np chrome) i wiele wiele innych klas, nie potrzebujesz korzystać z żadnej klasy z biblioteki standardowej, wszystko jest w prostszy sposób ujęte w ich własnych klasach.

Do swobodnego tworzenia aplikacji w wx potrzebujesz CB + wx + dokumentacja (http://www.wxwidgets.org/docs/) wx która niestety nie jest najlepsza według mnie.

Co ja proponuje? Na początek spróbuj z tym wx, jest prostsze na początek niż qt. Nie wiem czy znasz taki manager plików filezilla, został on napisany właśnie za pomocą wx. Jeżeli natomiast pragniesz tworzyć oszałamiające wyglądem okna to qt, wx niestety nie nada się do niczego lepszego niż standardowe systemowe kontrolki. w qt te możliwości przeogromne, gdyż wygląd stylizujesz lekko zmodyfikowanym css`em.

0

Okey, tak tez zrobię. Już pobrałem wxWidgets i właśnie zastanawiam się jak to zainstalować :) Posiedzę trochę w nim, a później sprawdzę QtC i porównam jak to działa.

Tylko mam pytanie odnośnie tej instalacji. Czy jest jakiś prostszy sposób zainstalowania tego tworu niż opisany na ich wiki? http://wiki.codeblocks.org/index.php?title=WxWindowsQuickRef ?

1

Jeżeli pobrałeś binarki a nie kod to jest, po prostu instalujesz tego exe co pobrałeś potem tworząc projekt wxwidget w cb wskazujesz miejsce tych bibliotek i wsio.

Edit. tutaj masz tutka http://codeincodeblock.blogspot.com/2011/02/setup-wxwidget-in-codeblock.html

0

Zainstalowałem exe i później robiłem dalej to co napisane na wiki, czyli odpaliłem CMD, wpisałem

cd /D C:\wxWidgets\build\msw
a następnie

mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport
Po około 30 minutach wywaliło mi Odmowę dostępu do mingw32-make, wyświetliło .stop. i "Waiting for unfinished jobs".
Doczytałem w necie, że to przypadkowe problemy z pamięcią, że trzeba zabić proces i zacząć od początku. Z tym, że ponowne odpalenie CMD i wpisywanie tych instrukcji już nie działa.
Wywala mi takie coś
if not exist ....\lib\gcc_dll\mswu\wx mkdir ....\lib\gcc_dll\mswu\wx
i przerywa.
Czy to wszystko było zbędne? :)

1

Tak bo w tej instalce masz już skompilowaną bibliotekę ;)

0

Oki czyli wystarczy to jedynie dodać. Możesz mi jeszcze napisać w jaki sposób dodaje się te biblioteki? Przez Plugins > Library Finder? Nigdy wcześniej nie dodawałem nic niestandardowego a nie chcę czegoś namieszać.
No i odnośnie mojego zbędnego kompilowania biblioteki. Nic tym nie namieszałem? Będzie działać wszystko jak powinno?

1

popatrz na link którego wysyłałem 2 posty wyżej

edit. tylko zamiast wybierać wxformbuilder wybierz wxsmith.

0

Faktycznie przegapiłem tamten link.
Ustawiłem wszystko tak jak jest w tutku z uwzględnieniem tego co napisałeś.
Przy ostatnich ustawieniach wyskoczyło ostrzeżenie:

A marching Debug configuration cannot be found in the wxWidgets directory you specified. This means that Debug target of your project will not build.

Mam kontynuować z tymi ustawieniami czy nie?

edit.
Zatwierdziłem tak jak było. Mam projekt już no i pierwsza kompilacja nie udana. Czepia się mnie, że nie ma biblioteki wx/setup.h No i faktycznie w katalogu tym takiej biblioteki nie ma. jest setup_inc.h, setup_redirect.h ale setup.h nie widać. A jednak jest w include/msvc/wr/ (jedyna biblioteka w tym folderze). Cała reszta jest w include/wr/. Teraz tak się zastanawiam do którego katalogu wr odnosi się błąd. Może wystarczy skopiować plik do tego drugiego wr?

edit.2.
No niestety to tez nie pomaga. Jak się okazuje ten drugi setup.h jest używany w przypadku korzystania z Visual Studio. Ma ktoś pojęcie skąd pobrać ten brakujący plik lub ewentualnie w jaki inny sposób to rozwiązać?

1

Po pierwsze mogłeś coś nachrzanić przy tej próbie kompilacji co robiłeś z początku.
Po drugie jak podawałeś ścieżki w kreatorze to do jakiego folderu? Może tam coś zrobiłeś nie tak, ja zamiast podawać osobno dla lib i includa dawałem dla base wpisując to samo co krok wcześniej i wszystko grało.

0

Ja tez wyłączyłem te okienko gdzie trzeba było oddzielnie podać, a wcześniejszym podałem według zaleceń folder zawierający include i lib.
Faktycznie mogło się coś schrzanić przy kompilowaniu bibliotek, tylko co teraz muszę przeinstalować? Kompilator? Code::Blocks? wxWidgets przeinstalowywałem już 2 razy i bez rezultatu.

A jeśli chodzi o debug i release to również u Ciebie nie wywala błędów przy tworzeniu projektu? Nie wiem czy to ma znaczenie ale ja to wszystko robię na WIn 7 x64.

1

Mam ten sam system, błędów nie mam. Nie wiem już co może być u ciebie źle. U mnie to bez żadnego problemu zawsze działa.

0

Nic nie pomogło :(
Cały czas się czepia linijki

  1. #include "wx/setup.h"
    w pliku platform.h i wywala błąd
    C:\wxWidgets-2.8.12\include\wx\platform.h|196|fatal error: wx/setup.h: No such file or directory|
    W dodatku oczywiście czepia się Debug i Release przy tworzeniu nowego projektu.
1

Ehh jeszcze raz, usuń wszystko co masz, usuń cb i kompilator oraz wx, przeczyść z cashu. Pobierz tego cb http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup.exe/download i tego wx http://sourceforge.net/projects/wxpack/files/latest/download instalujesz najpierw cb potem wx. nie ma bata żeby nie ruszyło.

0

A więc tak, na pewno jest postęp. Wcześniej nie korzystałem z tego wxPack i możliwe, ze to właśnie dzięki temu coś się ruszyło z miejsca. Przy tworzeniu nowego projektu, nie ma błędów z konfiguracją Debug i Release i wszystko się pięknie tworzy.
Standardowo odpala mi się form z jakimś tam menu. Jednak nie mogę go skompilować. Chyba powinienem móc czysty projekt skompilować. O dziwo błędów nie ma, przy kompilowaniu projektu. Natomiast przy odpalaniu gotowego programu wysypuje się od razu (tworzony projekt).
W szczegółach można doczytać się tego:

Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: dziendobry.exe
Wersja aplikacji: 0.0.0.0
Sygnatura czasowa aplikacji: 51360427
Nazwa modułu z błędem: wxbase28d_gcc.dll
Wersja modułu z błędem: 2.8.12.0
Sygnatura czasowa modułu z błędem: 4e0ce0bd
Kod wyjątku: c0000005
Przesunięcie wyjątku: 000c517e
Wersja systemu operacyjnego: 6.1.7601.2.1.0.768.3
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 0a9e
Dodatkowe informacje 2: 0a9e372d3b4ad19135b953a78882e789
Dodatkowe informacje 3: 0a9e
Dodatkowe informacje 4: 0a9e372d3b4ad19135b953a78882e789

Przeczytaj w trybie online nasze zasady zachowania poufności informacji:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0415

Jeśli zasady zachowania poufności informacji w trybie online nie są dostępne, przeczytaj nasze zasady zachowania poufności informacji w trybie offline:
C:\Windows\system32\pl-PL\erofflps.txt

0

Tylko mnie nie zjedzcie, ale ja bym się uparł dla prostych projektów Borland C++ Enterprise/Personal ;p

WinApi warto liznąć, powaga, ale tylko trochę.
wxWidget może na początek, żeby zorientować się jaki mają zamysł autorzy, ale ja bym odradzał raczej na rzecz Qt.

Jest świetna biblioteka graficzna SFML i może by tak w niej zrobić własne GUI dopasowane do własnych potrzeb? Kilka takich projektów przewija się w necie. Fajna by to była sprawa, zwłaszcza że kody pisane w SFML są przenośne, a i można by pomyslec o efekciarskich kontrolkach.

Żal mi d ściska, że nie ma nowego lepszego Buildera. Znaczy jest, ale ze 3 tysie trzeba wyłożyć, na torrentach/rapidach itp. zero słuchu (Borland C++XE).

Visual Studio BEE. Może kiedyś, jak będę musiał uczyć się C#...

0

Visual Studio BEE. Może kiedyś, jak będę musiał uczyć się C#...
Visual Studio to bardzo dobre IDE, ale niestety nie ma sensownej RAD-owej biblioteki dla C++.

0

Na razie wybrałem Qt5. Posiedzę przy nim i zobaczę co z tego wyjdzie :)
Buildera, używałem z 5-6lat temu i zostawiłem go gdy zobaczyłem, że ostatnia darmowa wersja jest z 2002 roku. Warto jednak spróbować czegoś nowego.
Instalowałem Visual Studio 2012 for Desktop i faktycznie do C# rewelacja, do C++ no kiepsko, a szkoda, bo gdyby było tak jak do C# to na pewno bym przy nim został.

0

Azarien@ własnie o RAD chodzi. Naprawdę, wolę starego Buildera, pach pach pach mam co trzeba, poustawiam eventy i program bangla. Jeśli nie używa się jakiś strasznie wymyślnych komponentów, to Wine pod Linuchem sobie nawet świetnie radzi ;p

Przez brak RAD mam awersję do Visuala, osobiście używam Code::Blocks 10.05 + GCC konsolowo. Konsola mi na 90% przypadków starcza, w co kiedyś nie chciało mi się wierzyć. Jeśli robić okienka, to po kiego robić to z palca ;p No chyba że bawimy się SFML, ale to inna liga programowania.

Prędzej czy później będę zmuszony do używania C# , póki co na razie podziękuję Visualowi.

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