나는 어떻게 덮어의 동일한 부분에 콘솔 Windows native C++콘솔 응용 프로그램을 사용하지 않고 제 3 자 라이브러리?

StackOverflow https://stackoverflow.com/questions/45286

  •  09-06-2019
  •  | 
  •  

문제

제가 콘솔 응용 프로그램이 필요한 상태를 표시한 항목의 하지만 하는 것 보다는 텍스트를 스크롤해 미친 듯이 나는 오히려 현재 상태를 유지하여 동일한 라인입니다.의 이익을 위해 예를 들어:

Running... nn% complete
Buffer size: bbbb bytes

해야 합 출력의 경우'nn'는 현재 완료율,그리고'bbbb'는 버퍼 크기,주기적으로 업데이트 같은 라인의합니다.

처음 접근 방법은 단순히 인쇄된 올바른 숫자의 는 콘솔에 인쇄하기 전에 새로운 상태이지만,이는 독이 깜빡이는 제거하고 싶습니다.도 지팡이 하나 표준 라이브러리 또는 MS-는 기능을 제공(VC8)그렇지 않을 소개하는 다른 의존성을 위한이 필요합니다.

도움이 되었습니까?

해결책

당신이 사용할 수 있는 SetConsoleCursorPosition.해야 합니다 call GetStdHandle 핸들을 얻 출력 버퍼입니다.

다른 팁

요셉,JP,그리고 CodingTheWheel 제공된 모든 소중한 도움이됩니다.

한 간단한 케이스,가장 바로 앞으로 접근 방식 보 CodingTheWheel 의 응답:

// before entering update loop
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bufferInfo;
GetConsoleScreenBufferInfo(h, &bufferInfo);

// update loop
while (updating)
{
  // reset the cursor position to where it was each time
  SetConsoleCursorPosition(h, bufferInfo.dwCursorPosition);

  //...
  // insert combinations of sprintf, printf, etc. here
  //...
}

더 복잡한 문제를 풀 콘솔 API 로에 의해 제공됩 JP 의 응답, 에서의 조정과 예제를 통해 제공됩 링크요셉의 응답 증명할 수 있습니다 유용하지만,내가 찾은 필요한 작업을 사용하여 CHAR_INFO 너무 지루한 이러한 간단한 응용 프로그램입니다.

는 경우에 당신을 사용하여 인쇄 을 사용하지 않는 기능을 생성하는 줄 바꿈 문자 또는 추가 끝까지,커서 이동을 다시 시작 부분의 라인 인쇄를 통해 다음 것은 당신을 넣습니다.을 생성하는 문자열이 완료 하기 전에 인쇄을 줄일 수 있습니다뿐만 아니라 깜박임.

업데이트:질문이 변경되었을 2 의 라인을 출력하는 대신 1 만드는 나의 대답 없이 완료합니다.더 복잡한 접근 방식이 필요합니다.JP 은 오른쪽으로 아이디어 콘솔 API.나는 다음과 같은 사이트 상세 정보는 많은 것을 달성하기 위해 필요 당신의 목표입니다.사이트도 언급을 줄이는 열쇠는 바로 여러분이 깜박이를 렌더링하는 모든 것을 화면에 표시하기 전에습니다.이 사실이 있을 때마다 아무것도 표시 화면에서 여부를 텍스트나 그래픽(2D 또는 3D).

http://www.benryves.com/tutorials/?t=winconsole

는 경우에는 요셉의 제안을 제공하지 않습을 충분히 유연성,보 콘솔 API: http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx.

리눅스에서,당신은 이것을 달성할 수 있는 인쇄하여\b 및/또는 stderr.필요할 수 있는 실험을 찾기 위해 적절한 조합의 것을 사용하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top