Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Aplikacja w wielu oknach

Ostatnio zmodyfikowano 2017-03-27 20:46
Autor Wiadomość
Kinexity
Temat założony przez niniejszego użytkownika
Aplikacja w wielu oknach
» 2017-03-27 01:17:15
Czy istnieje możliwość by różne część aplikacji konsolowej otwierały się oddzielnych oknach konsoli (np. w 1 menu, a w 2 wczytywanie tekstu z pliku)?
P-159464
j23
» 2017-03-27 15:39:05
W Windowsie to raczej niemożliwe (w prosty sposób).
P-159475
jankowalski25
» 2017-03-27 18:09:54
Najprościej chyba napisać kilka oddzielnych programów i całość odpalać z jakiegoś pliku *.bat.

Dopisano:
Ewentualnie możesz pobierać wszystko, co się da o konsoli i ręcznie zmajstrować identyczne okno, ale to raczej nie będzie proste (wszystkie bufory ekranu konsoli, obsługa zdarzeń, obsługa myszki, kodowanie znaków, otwieranie plików *.fon z czcionkami, całe menu ze wszystkimi ustawieniami, zmiana palety, tryb pełnoekranowy, ... - trochę tego jest).

Dopisano:
» WinAPIAllocConsole
Do procesu może być podłączona tylko jedna konsola na raz więc wywołanie niniejszej funkcji nie powiedzie się jeżeli dany proces jest już powiązany z konsolą.
Czyli ta funkcja też odpada. Jeden proces = jedna konsola. Jak chcesz uzyskać wiele okien konsoli w jednym programie, to musisz je jakoś sztucznie wprowadzić.

Dopisano:
https://msdn.microsoft.com​/en-us/library/windows/desktop​/ms682528(v=vs.85).aspx
A process can also create a console by specifying the CREATE_NEW_CONSOLE flag in a call to CreateProcess. This method creates a new console that is accessible to the child process but not to the parent process. Separate consoles enable both parent and child processes to interact with the user without conflict. If this flag is not specified when a console process is created, both processes are attached to the same console, and there is no guarantee that the correct process will receive the input intended for it. Applications can prevent confusion by creating child processes that do not inherit handles of the input buffer, or by enabling only one child process at a time to inherit an input buffer handle while preventing the parent process from reading console input until the child has finished.
Hmm, czyli może dałoby się coś wykombinować tworząc wiele procesów przez » WinAPICreateProcess... W końcu program to nie to samo, co proces, ale pewnie trochę zabawy by z tym było, więc wspomniane pliki *.bat i oddzielne programy wydają się najprostszym rozwiązaniem (chyba, że koniecznie musisz mieć jeden program i jeden proces, wtedy będzie nieco trudniej).
P-159476
Saran
» 2017-03-27 19:29:00
Możesz też po prostu zasymulować 2 okienka w jednej konsoli, robiąc jakąś ramkę z ASCII.
P-159479
jankowalski25
» 2017-03-27 19:31:59
A może wystarczy po prostu utworzyć kilka buforów ekranu konsoli i się pomiędzy nimi przełączać?
P-159480
Bielan
» 2017-03-27 20:46:24

Czy istnieje możliwość by różne część aplikacji konsolowej otwierały się oddzielnych oknach konsoli (np. w 1 menu, a w 2 wczytywanie tekstu z pliku)?
Jeżeli naprawdę bardzo ci na tym zależy i chcesz rozbijać pojedynczą aplikację na dziwne podsystemy konsolowe to musisz pomyśleć o czymś co byłoby kanałem komunikacji.

Można uznać, że jeden .exe odpala się jako "server" a kolejne jako "klienci". Każdy klient się "rejestruje" do pliku a serwer do innego pliku wysyła konkretne polecenia do wykonania przez klientów. Zamiast pliku możesz użyć bazy danych. Nie będzie to ani szybkie, ani ładne, ani zgodne z konwencją aplikacji konsolowych :)
P-159485
« 1 »
  Strona 1 z 1