Vorschlag, um Probleme bei Konsole in Win32-Anwendung zu beheben
-
Nach <AllocConsole();> funktionieren (jedenfalls bei mir) cout und ein paar andere Dinge nicht mehr, was ich mit folgendem Code behoben hab (das ist ehrlich gesagt woanders abgeschrieben - siehe http://dslweb.nwnexus.com/~ast/dload/guicon.htm - und verkürzt):
if(AllocConsole()){ hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE); *stdout = *_fdopen( _open_osfhandle((int)hConsoleOutput, 0), "w" ); setvbuf( stdout, NULL, _IONBF, 0 ); *stdin = *_fdopen( _open_osfhandle((long)GetStdHandle(STD_INPUT_HANDLE), 0), "r" ); setvbuf( stdin, NULL, _IONBF, 0 ); *stderr = *_fdopen( _open_osfhandle((long)GetStdHandle(STD_ERROR_HANDLE), 0), "w" ); setvbuf( stderr, NULL, _IONBF, 0 ); // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog // point to console as well std::ios::sync_with_stdio(); SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),0); }else{ //usw wenn entweder Fehler aufgetreten oder es eben schon eine Konsole gab; //denn <AllocConsole> erzeugt keine zweite, dafür brauchts attach~