Hallo Pfefferkeks,
Ich habe versuch mit mit (AllocConsole()) ein Consolenfenster
zu oeffnen und dort dann mit cout oder printf das Array
auszugeben. Leider erfolgloss, die Konsole ging auf nur keine
Ausgabe. Ist das ueberhaupt moeglich? Wenn ja wie?
Was hast Du denn genau gemacht? Nur AllocConsole
reicht nicht. Hast Du stdio und/oder cout
darauf (neue Konsole) umgeleitet?
Im Prinzip gänge das so:
...
char \* con\_buf = new char[SIZE\_IOBUF];
// file name exe anzeigen
if( !GetModuleFileName(hInstance, con\_buf, SIZE\_IOBUF) )
strcpy(con\_buf,"???????.???");
AllocConsole();
SetConsoleTitle(con\_buf);
// standard file handles -\> neue console
int hCrtOut = \_open\_osfhandle((long) GetStdHandle(STD\_OUTPUT\_HANDLE), \_O\_TEXT);
int hCrtInp = \_open\_osfhandle((long) GetStdHandle(STD\_INPUT\_HANDLE), \_O\_TEXT);
int hCrtErr = \_open\_osfhandle((long) GetStdHandle(STD\_ERROR\_HANDLE), \_O\_TEXT);
FILE \*hfout = \_fdopen( hCrtOut, "w" );
FILE \*hfinp = \_fdopen( hCrtInp, "r" );
FILE \*hferr = \_fdopen( hCrtErr, "w" );
\*stdout = \*hfout;
\*stdin = \*hfinp;
\*stderr = \*hferr;
setvbuf( stdout, con\_buf, \_IOLBF, SIZE\_IOBUF );
setvbuf( stdin , NULL, \_IONBF, 0 );
setvbuf( stderr, NULL, \_IONBF, 0 );
fflush( stdout );
fflush( stdin );
fflush( stderr );
// link c++ rtl cout\> ggf.)
ofstream con\_out( hCrtInp );
ostream\* p\_cout = &cout;
cout = con\_out;
cout.sync\_with\_stdio();
// ab hier gehts dann:
das\_eigentliche\_program\_beginnt();
fflush(stdout);
// fertig, aufraeumen
cout.sync\_with\_stdio();
fflush(stdout); // clear buffers
cout = \*p\_cout;
fclose(hfout); // close standard channels
fclose(hfinp);
fclose(hferr);
FreeConsole(); // close console
delete [] con\_buf;
...
Versuchs mal.
Grüße
CMБ