다음을 통해 공유


화면 버퍼 스크롤

Important

이 문서에서는 더 이상 에코시스템 로드맵의 일부가 되지 않는 콘솔 플랫폼 기능에 대해 설명합니다. 이 콘텐츠를 신제품에서 사용하지 않는 것이 좋지만, 무기한 앞으로도 기존 사용을 계속 지원할 것입니다. 선호하는 최신 솔루션은 플랫폼 간 시나리오에서 최대 호환성을 위해 가상 터미널 시퀀스에 중점을 둡니다. 이 디자인 결정에 대한 자세한 내용은 클래식 콘솔과 가상 터미널 문서에서 확인할 수 있습니다.

콘솔 창에는 활성 화면 버퍼의 일부가 표시됩니다. 각 화면 버퍼는 기본 콘솔 창에 표시할 왼쪽 위 및 오른쪽 아래 문자 셀의 좌표를 지정하는 고유한 현재 창 사각형을 지정합니다. 화면 버퍼의 현재 창 사각형을 확인하려면 GetConsoleScreenBufferInfo를 사용합니다. 화면 버퍼를 만들면 창의 왼쪽 위 모서리가 콘솔 화면 버퍼의 왼쪽 위 모서리(0,0)에 있습니다.

창 사각형은 콘솔 화면 버퍼의 다른 부분을 표시하도록 변경할 수 있습니다. 다음과 같은 상황에서 화면 버퍼의 창 사각형이 변경 될 수 있습니다.

  • 새 창 사각형을 지정하기 위해 SetConsoleWindowInfo를 호출하면 창 크기를 변경하지 않고 창 사각형의 위치를 변경하여 콘솔 화면 버퍼의 보기를 스크롤합니다. 창의 내용을 스크롤하는 예제는 화면 버퍼의 창 스크롤을 참조 하세요.

    screen buffer window panning around large buffer of content

  • WriteFile 함수를 사용하여 EOL(줄 끝) 출력 모드에서 래핑이 설정된 화면 버퍼에 쓰는 경우 창 사각형이 자동으로 이동되므로 커서가 항상 표시됩니다.

  • SetConsoleCursorPosition 함수가 현재 창 사각형의 경계 밖에 있는 새 커서 위치를 지정하면 창 사각형이 자동으로 이동하여 커서를 표시합니다.

  • 사용자가 콘솔 창의 크기를 변경하거나 창의 스크롤 막대를 사용하는 경우 활성 화면 버퍼의 창 사각형이 변경됩니다. 이 변경 내용은 입력 버퍼에서 창 크기 조정 이벤트로 보고되지 않습니다.

이러한 각 상황에서 창 사각형은 콘솔 화면 버퍼의 다른 부분을 표시하기 위해 이동하지만 콘솔 화면 버퍼의 내용은 동일한 위치에 다시 기본. 다음과 같은 상황으로 인해 콘솔 화면 버퍼의 콘텐츠가 이동될 수 있습니다.

  • ScrollConsoleScreenBuffer 함수가 호출되면 화면 버퍼의 한 부분에서 다른 부분으로 사각형 블록이 복사됩니다.
  • WriteFile을 사용하여 EOL 출력 모드에서 래핑이 설정된 화면 버퍼에 쓰는 경우 콘솔 화면 버퍼의 끝부분이 발견되면 콘솔 화면 버퍼의 내용이 자동으로 스크롤됩니다. 이 스크롤은 콘솔 화면 버퍼의 맨 위 행을 카드.

ScrollConsoleScreenBuffer 는 이동되는 콘솔 화면 버퍼 사각형과 사각형이 복사되는 새 왼쪽 위 좌표를 지정합니다. 이 함수는 콘솔 화면 버퍼의 일부 또는 전체 콘텐츠를 스크롤할 수 있습니다.

이 그림에서는 콘솔 화면 버퍼의 전체 콘텐츠를 여러 행으로 스크롤하는 ScrollConsoleScreenBuffer 작업을 보여 줍니다. 위쪽 행의 내용이 dis카드ed이고 아래쪽 행은 지정된 문자와 색으로 채워집니다.

screen buffer window scrolling content off top to discard

클리핑 사각형 외부의 콘솔 화면 버퍼 내용이 변경되지 않도록 선택적 클리핑 사각형을 지정하여 ScrollConsoleScreenBuffer 의 효과를 제한할 수 있습니다. 클리핑의 효과는 콘솔 화면 버퍼의 나머지 부분에 영향을 주지 않고 내용이 스크롤되는 하위 해제(클리핑 사각형)를 만드는 것입니다. ScrollConsoleScreenBuffer를 사용하는 예제는 화면 버퍼의 내용 스크롤을 참조 하세요.