C++:如何在命令提示符中的特定位置绘制 ASCII 字符

标签 c++

<分区>

基本上,我希望能够创建一个我可以去的函数:

draw('C', x, y);
draw('h', x+1, y);
draw('a', x+2, y);
draw('r', x+3, y);

命令提示符将显示Char在给定的 x 和 y 位置

我在研究中所能弄清楚的是我将不得不include <windows.h> ,我对此经验非常少,并使用该库中的预定义内容。

最佳答案

这可能会帮助您入门。参见 https://msdn.microsoft.com/en-us/library/windows/desktop/ms682073(v=vs.85).aspx了解更多信息。

#include <windows.h>
#include <stdio.h>

void main()
{
    HANDLE screenBuffer = CreateConsoleScreenBuffer(
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        CONSOLE_TEXTMODE_BUFFER,
        NULL);

    if (screenBuffer == INVALID_HANDLE_VALUE)
    {
        printf("CreateConsoleScreenBuffer failed - (%d)\n", GetLastError());
        return;
    }

    if (!SetConsoleActiveScreenBuffer(screenBuffer))
    {
        printf("SetConsoleActiveScreenBuffer failed - (%d)\n", GetLastError());
        CloseHandle(screenBuffer);
        return;
    }

    for (int x = 0; x < 10; ++x)
    {
        DWORD numCharsWritten;
        WriteConsoleOutputCharacter(screenBuffer, "X", 1, COORD{(short)x, 1}, &numCharsWritten);

        Sleep(1000);
    }

    CloseHandle(screenBuffer);
}

关于C++:如何在命令提示符中的特定位置绘制 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913502/

相关文章:

c++ - C++11 中提出的无限制 union 是什么?

c++ - QProgressDialog::setValue 产生随机堆栈溢出

c++ - VkDescriptorBufferInfo 'range' 字段是否需要是 VkPhysicalDeviceProperties 'limits.minUniformBufferOffsetAlignment' 字段的倍数?

c++ - 使用光标操作打印垂直直方图 C++[ncurses][解决了 w/o ncurses]

c++ - 析构问题

c++ - 重载的返回类型 >>

c++ - TinyXML Debian 安装

c++ - 即使是最小的更新后 QGraphicsScene 也会崩溃

c++ - 将二进制数据从 QML 传递到 C++

c++ - 从二进制文件中读取 std::string