我们如何在装配中清除控制台?

时间:2011-05-03 07:41:16

标签: winapi assembly masm

我正在寻找一个清除控制台的win32 api函数,就像cls命令一样 谢谢! Devjeet

2 个答案:

答案 0 :(得分:12)

这已经很老了,但是应该仍然有效。转换为汇编语言留给读者练习,但不应该非常困难(大多数只是函数调用,乘法很简单):

#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);
}

答案 1 :(得分:4)

没有直接清除控制台的Win32 API - 您需要使用类似FillConsoleOutputCharacter的内容。