Zwischen screen buffer wechseln ... aber wie?



  • Mahlzeit!

    Ich suche nach einem möglichst einfachen Weg um zwischen zwei screen buffer hin und her zu schalten und die Ausgabe jeweils auf den aktuellen bzw. aktiven buffer umzuleiten. Das hin- und herschalten funktioniert auch (glaube ich), allerdings werden sämtliche Ausgaben im ursprünglichen screen buffer getätigt.

    Mein Code bis jetzt:

    #include <conio.h> // for getch()
    #include <iostream>
    #include <windows.h>
    using namespace std;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    HANDLE hBuffer = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
                                               NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
    HANDLE hCurrent = hConsole;
    HANDLE SwitchOutput(HANDLE hTarget);
    
    int main()
    {
    	printf("Hello world!\n");
    	getch();
    	hCurrent = SwitchOutput(hCurrent);
    	printf("Hello another world!\n");
    	getch();
    	hCurrent = SwitchOutput(hCurrent);
    	printf("Hello again old world!\n");
    	getch();
    	return 0;
    }
    
    HANDLE SwitchOutput(HANDLE hSwitch)
    {
    	HANDLE hTemp;
    	if (hSwitch == hConsole)
    	{
    		hTemp = hBuffer;
    	}
    	else
    	{
    		hTemp = hConsole;
    	}
    	SetConsoleActiveScreenBuffer(hTemp);
    	SetStdHandle(STD_OUTPUT_HANDLE, hTemp);
    	return hTemp;
    }
    

    Irgendwas hab ich übersehen oder falsch gemacht, aber ich komm' einfach nicht drauf. 🙄


Anmelden zum Antworten