【问题标题】:How do we clear the console in assembly?我们如何在组装中清除控制台?
【发布时间】:2011-08-17 12:21:46
【问题描述】:

我正在寻找一个清除控制台的win32 api函数,很像cls命令 谢谢! 开发者

【问题讨论】:

    标签: winapi assembly masm


    【解决方案1】:

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

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

    【讨论】:

    • :O 装配有空洞 :D 确实,转换确实是微不足道的。
    • 最后 2 个语句,attrib 未定义,控制台也未定义。我猜控制台是屏幕?但是什么是属性?谢谢。
    • @UkownUser:当我最初编写这段代码时,我正在编写的程序中看起来代码仍然有一些小的位。我已经编辑了独立工作的代码。感谢您的提醒。
    【解决方案2】:

    没有直接清除控制台的 Win32 API - 您需要使用 FillConsoleOutputCharacter 之类的东西。

    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 2021-12-10
      • 2011-02-28
      相关资源
      最近更新 更多