Как очистить консоль в сборке? - PullRequest
3 голосов
/ 03 мая 2011

Я ищу функцию API win32, которая очищает консоль, так же, как команда cls Спасибо!Devjeet

Ответы [ 2 ]

12 голосов
/ 03 мая 2011

Это довольно старый, но должен все еще работать.Преобразование в язык ассемблера оставлено читателю как упражнение, но не должно быть очень сложным (большинство из них - просто вызовы функций, а умножение тривиально):

#include <windows.h>

void clear_screen(char fill = ' ') { 
    COORD tl = {0,0};
    CONSOLE_SCREEN_BUFFER_INFO s;
    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);   
    GetConsoleScreenBufferInfo(console, &s);
    DWORD written, cells = s.dwSize.X * s.dwSize.Y;
    FillConsoleOutputCharacter(console, fill, cells, tl, &written);
    FillConsoleOutputAttribute(console, s.wAttributes, cells, tl, &written);
    SetConsoleCursorPosition(console, tl);
}
4 голосов
/ 03 мая 2011

Нет Win32 API, который напрямую очищает консоль - вам нужно использовать что-то вроде FillConsoleOutputCharacter .

...