Autor Wątek: Szybsze (własne) GUI  (Przeczytany 3463 razy)

Offline nembutal

  • Użytkownik

# Marzec 20, 2011, 14:39:45
Cytuj
Tak na poważnie to napisałeś własną bibliotekę kontrolek i kod do ich rasteryzacji?
Przynajmniej ze trzy biblioteki reusowalne, nie licząc mniejszych GUI pisanych pod konkretne projekty (których mogło być dośc dużo). Poza tym nie używałbym wielkich słów typu "rasteryzacja", skoro narysowanie kontrolki VST sprowadza się do narysowania alpha-blendowanego obrazka. :)

Jeżeli chodzi o "duże" GUI, to roboty tu jest nieco więcej, ale musiałem też zrobić bo żadne inne GUI jakie znalazłem nie spełniało moich wymagań, w tym głównego: jak najmniej kodu, czyli jedna kontrolka = jedna linijka w C++ i nic więcej (żadnych create/destroy, żadnych callbacków, itp).

Czemu tego nie opublikujesz? Jest to na tyle dobre żeby żądać jakieś ceny za licencję? Ewentualnie zostaje przycisk "donate".
Odkopałem ten wątek bo też nie jestem całkowicie zadowolony ani z wxWidgets ani z Qt. Np. żeby stworzyć sobie modalne okienko wxWidgets w aplikacji natywnej to trzeba ryć w źródłach wxWidgets i wywoływać jakieś nieudekumentowane globalne metody inicjulizujące/sprzątające.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Marzec 20, 2011, 15:56:45
Odkopałem ten wątek bo też nie jestem całkowicie zadowolony ani z wxWidgets ani z Qt. Np. żeby stworzyć sobie modalne okienko wxWidgets w aplikacji natywnej to trzeba ryć w źródłach wxWidgets i wywoływać jakieś nieudekumentowane globalne metody inicjulizujące/sprzątające.

Chodzi tobie o wxEntryStart i wxEntryCleanup? Jeśli tak, to są one udokumentowane, a nawet jakby nie były, to znalezienie rozwinięcia makra nie przekracza możliwości umysłowych makaka. Ale oczywiście jeśli potrzebujesz tego do raptem jednego okienka, to faktycznie z wxWidgets trochę za dużo zachodu ;-).

Offline nembutal

  • Użytkownik

# Marzec 20, 2011, 16:09:02
Odkopałem ten wątek bo też nie jestem całkowicie zadowolony ani z wxWidgets ani z Qt. Np. żeby stworzyć sobie modalne okienko wxWidgets w aplikacji natywnej to trzeba ryć w źródłach wxWidgets i wywoływać jakieś nieudekumentowane globalne metody inicjulizujące/sprzątające.

Chodzi tobie o wxEntryStart i wxEntryCleanup? Jeśli tak, to są one udokumentowane, a nawet jakby nie były, to znalezienie rozwinięcia makra nie przekracza możliwości umysłowych makaka. Ale oczywiście jeśli potrzebujesz tego do raptem jednego okienka, to faktycznie z wxWidgets trochę za dużo zachodu ;-).

No z opisu na Wiki wynika co innego:
Cytuj
You can initialise wxWidgets from non-wxWidgets applications. You should look at the headers and not the docs for these functions, they are mostly internal and so far we have not decided yet what the best API would be for them so they are not documented.

In short you should use wxInitialize and wxUninitialize with a message loop in between, instead of just calling wxEntry. Indeed wxEntry basically calls wxEntryStart, then runs the MainLoop and calls wxEntryCleanup when the loop exits. wxInitialize and wxUninitialize will respectively call wxEntryStart and wxEntryCleanup.

Note that wxEntry has some tweaks with wxMSW. You should look at init.cpp to have an idea of what to do in addition to wxInitialize.
http://wiki.wxwidgets.org/Wx_In_Non-Wx_Applications

Zresztą sam nie wiem czemu w ogóle się tak zapędziłem w głąb dokumentacji żeby znaleźć tą informację. Normalnie odnalazłbym tylko klasę okienka i uznał, że po opuszczenia konstruktora jest ono gotowe do użytku - w końcu mamy XXI wiek, a ten framework ma jakąś tam renomę. Oglądałem kiedyś jakiś wykład Google na youtube jak się koleś na przykładzie nabijał z wykorzystania singletonów do ukrywania globalnego stanu - wxWidgets robi to samo z tymi funkcjami. Tu nie chodzi o to czy to przekracza moje możliwości umysłowe - to jest po prostu brzydki design.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Marzec 20, 2011, 17:07:04
Zresztą sam nie wiem czemu w ogóle się tak zapędziłem w głąb dokumentacji żeby znaleźć tą informację. Normalnie odnalazłbym tylko klasę okienka i uznał, że po opuszczenia konstruktora jest ono gotowe do użytku - w końcu mamy XXI wiek, a ten framework ma jakąś tam renomę. Oglądałem kiedyś jakiś wykład Google na youtube jak się koleś na przykładzie nabijał z wykorzystania singletonów do ukrywania globalnego stanu - wxWidgets robi to samo z tymi funkcjami. Tu nie chodzi o to czy to przekracza moje możliwości umysłowe - to jest po prostu brzydki design.

Czyli nie używasz żadnej biblioteki, która twoim zdaniem ma brzydki design? Ciekawy więc jestem, jaka nie ma :-). Swoją drogą, jeśli użycie globalnej funkcji inicjującej jest dla ciebie symptomem złego designu, to chyba powinieneś przesiąść się na Javę.

Notabene te funkcje inicjujące wxWidgets "nic ważnego" nie robią - ot, jakaś tam obsługa wyjątków, parsowanie linii poleceń itp. Pewnie, że dałoby się obejść bez tego, jeśli masz zamiar zrobić tylko jedno okienko. Sęk w tym, że wxWidgets, jak już wspomniałem, nie jest biblioteką do robienia tylko jednego okienka. To gigantyczny framework o dużych możliwościach. Nie twierdzę, że jest zaprojektowany idealnie, ale też z całą pewnością nie zrobiłbyś tego lepiej, najwyżej ci się tylko tak wydaje.