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~
    

Anmelden zum Antworten