Autor Wątek: QTCreator+SDL, a przenośne chowanie konsoli  (Przeczytany 2554 razy)

Offline Furry

  • Użytkownik
    • DevBlog

# Kwiecień 16, 2012, 18:48:56
Cześć, mam pewne pytanie: otóż załóżmy, że mamy projekt w QTCreatorze w którym wykorzystujemy SDLa, do przechwytywania zdarzeń, tworzenia okna itp. No i fajne, tyle, że zachodzi pytanie w jaki sposób zrobić by wieloplatformowo nie pokazywać lub chować terminal. W Windowsie jest to bardzo proste bo wystarczy użyć "FreeConsole();" natomiast w Linuksie/Macu czegoś takiego nie ma.
Czy da się w jakiś sposób wymanewrować tak w trakcie działania programu by ukryć terminal? Ewentualnie użyć takich opcji w QTCreatorze(kompiluje przez g++) aby takowy terminal wcale się nie pojawiał? Mam oczywiście na myśli by tak się działo na wszystkich platformach. 

Offline Mr. Spam

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

Offline Xirdus

  • Redaktor

# Kwiecień 16, 2012, 18:53:14
-mwindows?

Offline hashedone

  • Użytkownik

# Kwiecień 16, 2012, 20:42:48
Dostałeś odpowiedź na innym forum. Nie możesz ukryć terminala w innym systemie niż windows. Jest to spowodowane idiotyczną architekturą systemu ze stajni M$ która pozwala programiście manipulować rzeczami które nie specjalnie go obchodzą. Za to co możesz zrobić, to nie tworzyć bez powodu takiego okienka - np. poprzez nie wysyłanie nic na standardowe wyjście.

Offline Kos

  • Użytkownik
    • kos.gd

# Kwiecień 16, 2012, 21:26:05
@up znaczy Windows jest idiotyczny, bo da się zrobić tak, jak OP chce i jak user chce zobaczyć? :)

Offline Furry

  • Użytkownik
    • DevBlog

# Kwiecień 17, 2012, 07:59:57
Moje pytanie tam było troche inne, a tu skoro się nie da schowac chodziło mi o to czy da się po prostu nie pokazać terminala skoro nie można go schować(nie tylko komendą ale jakiś zmyślnym trickiem).
Co ciekawe, jak wyrzuciłem z QTCreatora +=console i zrobiłem wersje release to po odpaleniu aplikacji, nie przy kompilacji ale normalnie przez kliknięci ikonki, to uruchomiła się bez terminala. Szczerze mówiąc nie oczekiwałem takiego efektu bo w żaden sposób nie sugeruję, że chce mieć tylko okno(np poprzez -mwindows). Sprawdzę jeszcze jak to działa na innych platformach.

Offline hashedone

  • Użytkownik

# Kwiecień 17, 2012, 11:00:33
@Kos - jedynie windows pozwala na manipulację swoim środowiskiem uruchomieniowym co jest idiotyczne. Normalny system nie powinien w ogóle pokazywać żadnych okienek, dopóki nie wyprowadzimy czegoś na standardowe wyjście. A jeśli np logi zawsze wysyłaliśmy na std::cerr a teraz nie  chcemy wysyłać ich na standardowy strumień błędów, to wyjściem nie jest ukrywanie okienka systemowego który jest zupełnie innym procesem niż nasza aplikacja, a po prostu odczepienie std::cerr od rurki która wychodzi do systemu a user może sobie z nią robić co chce. Lub też napisanie jakiegoś launchera (nawet jako 2-linijkowy skrypt w bashu), który tę rurkę przekieruje do pliku. W normalnej sytuacji jeśli nic na wyjście nie wyjdzie, to linux żadnego specjalnego okienka nie pokazuje i to jest zachowanie jakiego się oczekuje. Inną rzeczą są jakieś specjalne flagi biblioteki które mogę wymusić pokazanie takiego okienka (nie wiem po co, ale jeśli jest to ustawiane flagą to ok) - tu własnie flaga console.
@Furry - A czy sugerujesz gdzieś, że chcesz mieć jakieś okienko konsoli (a więc odpalany dodatkowy proces - xterm, aterm, bogjedenwiejakiterm)? Nie? To co Cię  dziwi?