You are here

Überschreiben der Funktionen der Basisklasse streambuf, die aufgerufen werden, wenn eine Ausgabe erfolgen soll

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();
}