.[ ČeskéHry.cz ].
Zavření SDL konzole

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 30. červenec 2007, 09:55:14    Předmět: Zavření SDL konzole Odpovědět s citátem

Zdravím,
když vypnu SDL aplikaci zavřením okna konzole místo render okna, zobrazí se toto:

Jak se to má řešit? Jde mi o windows, takto vytvářím na začátku aplikace konzoli:
kód:
#include <windows.h>
#include <io.h>
#include <cstdio>
#define _O_TEXT 00075
void ActivateConsole()
{
    AllocConsole();

    HANDLE newConsoleInput = GetStdHandle(STD_INPUT_HANDLE);
    HANDLE newConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

    int inFd = _open_osfhandle((long)newConsoleInput, _O_TEXT);
    int outFd = _open_osfhandle((long)newConsoleOutput, _O_TEXT);

    FILE* consoleIn = _fdopen(inFd, "r");
    FILE* consoleOut = _fdopen(outFd, "w");

    setvbuf(consoleIn, NULL, _IONBF, 0);
    setvbuf(consoleOut, NULL, _IONBF, 0);

    *stdin = *consoleIn;
    *stdout = *consoleOut;
}


Díky

OT: Předpokládám, že linux verze této funkce by byla:
kód:
void ActivateConsole()
{
}



Wink

PS: Toto téma nepatří do sekce C/C++ podle mě ani náhodou, ale není to kam dát. (Do popelnice to házet nechci.) Chtělo by to přidat sekci "Ostatní herní knihovny".
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 30. červenec 2007, 10:01:47    Předmět: Odpovědět s citátem

PRESUNUTO: je tu sekce Obecne, v pripade ze nevim kam s prispevkem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 30. červenec 2007, 14:50:30    Předmět: Odpovědět s citátem

S tim asi neporadim, protoze jsem konzoli timhle zpusobem nikdy nedelal. Vypada to, ze si budes muset nejak odchytit ten klik krizek a pak ji spravne uvolnit, presmerovat stdout a stdin tam, kde byl predtim apod. Pokud chces mit konzoli jen pro debugovaci ucely a pro normalni beh mit win32 aplikaci, projekt se da mezi temito dvema prepinat a nemusi se zakladat novy. Viz nastaveni projektu Linker -> System -> SubSystem, tam das bud Console nebo Windows. Pak bys mel jeste v C/C++ -> Preprocessor nastavit definici _CONSOLE nebo _WINDOWS, aby se to pak v kodu dalo nejak zjistit a pouzit main nebo WinMain.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ladik-BigBoss



Založen: 28. 07. 2007
Příspěvky: 162

PříspěvekZaslal: 30. červenec 2007, 16:44:45    Předmět: Odpovědět s citátem

nebo kdyz si prekompilujes SDL s jednim parametrem tak se ti vytvori konzole automaticky a nebudes mit tyhle problemy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Yossarian



Založen: 28. 07. 2007
Příspěvky: 274
Bydliště: Šalingrad

PříspěvekZaslal: 30. červenec 2007, 18:07:33    Předmět: Odpovědět s citátem

*stdin = *consoleIn;

toto rozhodne udelat nemuzes, kdyz uz tak stdin = consoleIn, ale nemyslim si ze bys mel pravo stdin a stdout menit ( do souboru se daji presmerovat pomoci freopen, myslim ze takto se presmeruji samy.. )
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna