[Visual C++, C::B] Tworzenie GUI w aplikacjach natywnych

0

Witam!

Miałem niedawno okazję zapoznać się z VC++ 2008. Mimo, że środowisko posiada bardzo wygodne narzędzia oraz bogaty zbiór kontrolek do tworzenia GUI dla aplikacji pod platformę .NET, to z rozczarowaniem stwierdziłem, że niczego takiego nie ma dla aplikacji natywnych.. czy to jest celowy zabieg MS, czy też istnieją jakieś ogólnodostępne dodatki, które umożliwiają równie efektywne tworzenie interfejsu w "tradycyjnych" aplikacjach?

Póki co pracuję na Code::Blocks w połączeniu z wxWidgets. Czy istnieją na dzień dzisiejszy lepsze rozwiązania (darmowe)?

Btw. Zastanawiam się, w jakim środowisku MS napisał np. Outlook Express albo IE.. - czyżby całe GUI ręcznie :-) ?

0
  • tak, jest to celowe. w starych visualach istnialo pelno fajnych rzeczy, ale obecnie Microsoft ma parcie na C#/XAML i jak widzisz, delikatnie stara sie wszystkich na niego przerobic
  • tak, istnieja.. owy wxWidgets, QT, WTL itp. niestety musisz poszukac..
  • nie, nie recznie. pisali je w visualu korzystajac z kontrolek ktore napisali recznie albo z tych ktore siedza od dawna w windowsie tylko nie widac ich na toolboxie ani nie m ado nich dokumentacji.. np. wiesz ze PULPIT to dokladnie ta sama kontrolka co 'ZawartoscFolderu' ktora widzisz w exploratorze i ma dokladnie takie same mozliwosci? ip. etc.

btw. wszystkie najnowsze kontrolki poza XAML'owymi sa dostepne nawet z winapi, nie trzeba uzywac C# ani w ogole .Neta.. tylko trudno sie do nich dostac

0

No jak to nie ma niczego dla aplikacji natywnych - przeciez jest kompilator natywnego C++ i MFC ze zintegrowanym edytorem okienek dialogowych - tak samo, jak od zawsze bylo w Visual C++. Jest wszystko to, co bylo w starych Visualach :|

Do wxWidgets edytora GUI w Visual C++ nie uswiadczysz, ale spokojnie mozna kompilowac projekty napisane w wxWidgets.

0

Witam!

Miałem na myśli brak edytora GUI.. możliwość edycji tylko okienek dialogowych wobec braku narzędzi do tworzenia "normalnych" okien w aplikacjach natywnych IMHO mija się z celem. To jest pierwsza wersja VC++, z jaką miałem do czynienia, więc nie wiem, jak sytuacja wygląda w starszych.

Znalazłem ciekawą inicjatywę: "RAD C++" w połączeniu z VC++.. tyle tylko, że biblioteka nie jest jeszcze kompatybilna z VC++ 2008, a ostatnia aktualizacja była w marcu. Czy mieliście okazję wypróbować? Jak oceniacie względem wxWidgets + C::B + VC++ (do kompilacji)?

Kolejne pytanie: czy jest możliwe, aby aplikacje napisane w C::B + wxWindows miały rozsądne rozmiary (bez konieczności dołączania osobnego DLLa z biblioteką)? Prosta forma wygenerowała u mnie plik o rozmiarze ponad 2MB..

0

zainteresuj się Bracie Qt z www.trolltech.com ;biblioteka ta umożliwia oprócz tworzenia okien dialogowych także tworzenie okien razem z menusami,przyciskami, etc

0

Miałem na myśli brak edytora GUI.. możliwość edycji tylko okienek dialogowych wobec braku narzędzi do tworzenia "normalnych"

Nie wiem o co ci chodzi - okienka dialogowe to wlasnie GUI. A co to niby jest twoje "normalne" okno?

Mozesz sobie zrobic aplikacje Dialog Based w MFC i cale gui wyklikac ustawiajac kontrolki na formularzu, podobnie mozesz dodac menu. Z kolei jezeli chcesz np. aplikacje MDI, to musisz recznie wpisac kilka linijek - to nie Delphi ze ustawiasz "komponenty na formie" i nawet nie wiesz jak to dziala. Zreszta tego nawet i w Code::Blocks nie miales.

0

bacz, ze on moze miec VC w wersji Express a tam edytor MFC jest 'zablokowany'

0

Nieporozumienie wynikło z tego, że zasugerowałem się nazwami rodzajów obramowania okien z Delphi.

Faktycznie, w VC++ jest możliwość tworzenia aplikacji natywnych z GUI, to trzeba przyznać ;-) Udało mi się zrobić prostą aplikację SDI, dalej nie powinno być problemu.

Posiadam wersję Professional z uczelni, ale docelowo chciałem współpracować z osobami posiadającymi wersję Express.. blokada trochę krzyżuje plany :-(

Przypuśćmy zatem kombinację C::B + QT (czytałem, że jest możliwa).

  1. Czy QT wymaga, aby wraz z programem dystrybuowane były pliki biblioteki?
  2. Czy QT, podobnie jak wxWindows, generuje pliki wynikowe o dużych rozmiarach, czy raczej mniejsze (orientacyjnie, w końcu zależy to od ustawień kompilatora)?
0

Gdy ostatnio miałem do czynienia z C::B to fakt, kombinacja z QT była możliwa, ale jeszcze niedopracowana. C::B jednak dość szybko się rozwija, więc mogło się wiele zmienić. Swoją drogą do tej pory nie znalazłem dla QT lepszej alternatywy niż edytor z podpowiadaniem składni i konsola (i to wcale nie zboczenie :) ). W końcu to są tylko 2 komendy wydawane na bieżąco (qmake, make).

  1. tak (dużo zależy jakie zależności będzie Twój program wymagał)
  2. pliki wynikowe są małe, ale względem 1 to dodatkowe biblioteki to minimum 12MB (QtCore4.dll i QtGui4.dll)
0

Pliki wynikowe z wxWidgets linkowanym statycznie sa duze tylko jezeli uzywasz kompliatora gcc.

Podam przyklad - dosc skomplikowana aplikacja wxWidgets skompilowana w Visual c++ 2008 po potraktowaniu upx-em - 450 kB czyli całkiem normalnie. Bez upx - okolo 700-800 kB.

0

To już całkiem przyzwoicie :-) .
Aktualnie próbuję nakłonić do współpracy C::B oraz Qt 4.4.. jeśli się uda, dam znać o wynikach ;-) .

0

Nie wiem czy pomogę. Ale jeśli chcesz w łatwy sposób tworzyć aplikacje okienkowe to zainteresuj się BCB (Borland C++ Builder) Jak się nie mylę to korzysta z biblioteki VCL. Ja go używam do tworzenia aplikacji z rozbudowanym interfejsem. Albo do aplikacji do konfigurowania innych programów. Bo jednak pod w czystym API piszę się najlepiej. :D

0

Witam!

Dzięki za wskazówki!

Ostatecznie zdecydowałem się na następujące rozwiązanie: wxWidgets + wxFormBuilder + VC++ 2008 (do kompilacji). Biblioteka graficzna spisuje się całkiem nieźle, a jej statyczne załączenie do programu daje w rezultacie plik o rozmiarze rzędu 1300 kB (po skompresowaniu UPX'em - ok. 400 kB) dla średnio rozbudowanej aplikacji GUI.

Przy okazji jedno pytanie do znawców wxFormBuilder'a ;-)
Na formie utworzyłem ToolBar z przyciskami. Chcę, aby obrazki (bmp) na przyciski były pobierane z zasobów aplikacji (opcja "Load From Resource"). Utworzyłem w VC++ odpowiedni plik .rc i dodałem do zasobów przykładową bitmapę. W Visualu nazwa zasobu to "IDB_BITMAP1". Gdy wpisuję ją do pola "resource_name" w wxFB, to po skompilowaniu i uruchomieniu programu wyskakuje błąd: "Can't load bitmap 'IDB_BITMAP1' from resources! Check .rc file.". Czy jest to mój błąd, czy też bug wxFB?

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