Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 30. červenec 2007, 09:55:14 Předmět: Zavření SDL konzole |
|
|
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()
{
} |
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 30. červenec 2007, 10:01:47 Předmět: |
|
|
PRESUNUTO: je tu sekce Obecne, v pripade ze nevim kam s prispevkem |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 30. červenec 2007, 14:50:30 Předmět: |
|
|
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 |
|
 |
ladik-BigBoss

Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 30. červenec 2007, 16:44:45 Předmět: |
|
|
nebo kdyz si prekompilujes SDL s jednim parametrem tak se ti vytvori konzole automaticky a nebudes mit tyhle problemy |
|
Návrat nahoru |
|
 |
Yossarian

Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 30. červenec 2007, 18:07:33 Předmět: |
|
|
*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 |
|
 |
|