Win32 C++ console clearing screen without blinking

后端 未结 3 695
执笔经年
执笔经年 2021-02-10 02:58

I\'ve seen some console games where the screen refreshes/clears itself without the annoying blinking. I\'ve tried numerous solutions, here\'s what I got as of now:



        
相关标签:
3条回答
  • 2021-02-10 03:24

    The reason this is happening is because the display refreshes between the time you clear the console screen and actually draw to it. Usually this can happen so fast that you never see it but once in a while you do it at the right time and you experience flickering.

    One great option is to create an offscreen buffer the same size and width as the console screen, do all of your text output and updating there, then send the entire buffer to the console screen using WriteConsoleOutput. Make sure you take into account that the screen buffer has to hold both text and attribute information, the same format as the console.

    BOOL WINAPI WriteConsoleOutput(
      _In_     HANDLE hConsoleOutput,
      _In_     const CHAR_INFO *lpBuffer,
      _In_     COORD dwBufferSize,
      _In_     COORD dwBufferCoord,
      _Inout_  PSMALL_RECT lpWriteRegion
    );
    
    0 讨论(0)
  • 2021-02-10 03:33

    You looking for double buffering

    0 讨论(0)
  • 2021-02-10 03:43

    You want to do the equivalent of double buffering. Using CreateConsoleScreenBuffer and SetConsoleActiveScreenBuffer api calls, you can modify an offscreen buffer, then switch buffers, like we used to in the bad old days :) Here's an article that explains how: http://msdn.microsoft.com/en-us/library/windows/desktop/ms685032%28v=vs.85%29.aspx

    0 讨论(0)
提交回复
热议问题