Die Überschreibungen sync und overflow werden von der Stream-Klasse aufgerufen, wenn der Ausgabe-Puffer in das Gerät schreiben soll, z.B. bei dem Aufruf von flush. Sie rufen die privaten Funktionen WriteToConsole bzw. WriteCharToConsole auf, die die eigentliche Ausgabe durchführen.
int OG_constreambuf::sync()
{
WriteToConsole();
return(0);
}
int OG_constreambuf::overflow(int c)
{
WriteToConsole();
if (c != EOF)
if (pbase() == epptr())
WriteCharToConsole(c);
else
sputc(c);
return 0;
}
Der Destruktor und die Funktion DeleteConsole sind trivial.
OG_constreambuf::~OG_constreambuf()
{
sync();
if (pReserve)
delete pReserve;
DeleteConsole();
}
void OG_constreambuf::DeleteConsole()
{
CloseHandle(hConsoleOut);
FreeConsole();
}