c++ - FillConsoleOutputCharacterW() C++ 错误

标签 c++ windows

每当这部分代码运行时,我都会遇到运行时错误:

    void PrintChar(int x, int y, char ch, Colors color) {
    COORD c = {y,x};

    FillConsoleOutputCharacterW(GameData::handle, ch, 1, c, NULL);
    FillConsoleOutputAttribute(GameData::handle, color, 1, c, NULL);
}

错误是它正在覆盖位置 0x00000000

有人可以解释为什么会出现这个错误吗?

游戏数据类 -

class GameData {
public:
static CRITICAL_SECTION cs;
static void * handle;
static GameStates gameState;

static int speed;
static int level;
static int points;
static int nextShape;
static int nextTurnShape;
};

颜色 -

enum Colors {
Black, DarkBlue, Green, Blue, Red, Purple, Yellow, While, Gray,
LightDarkBlue, LightGreen, LightBlue, LightRed, LightPurple, LightYellow, BrightWhile
};

附言

如果我需要提供更多代码来阐明正在发生的事情,请告诉我。

最佳答案

如果您查看该 API 的文档:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682663(v=vs.85).aspx

您应该传递一个 DWORD 变量的地址,该变量接收实际写入控制台屏幕缓冲区的字符数

void PrintChar(int x, int y, char ch, Colors color)
{ 
    DWORD dwNumOfCharsWritten;

    COORD c = {static_cast<short>(y), static_cast<short>(x)};

    FillConsoleOutputCharacterW(GameData::handle, ch, 1, c, &dwNumOfCharsWritten);
    FillConsoleOutputAttribute(GameData::handle, color, 1, c, &dwNumOfCharsWritten);
}

关于c++ - FillConsoleOutputCharacterW() C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39653789/

相关文章:

c++ - 如何在带有 libSVM 的 C++ 中使用 auto_train

c++ - Sieve of Sundaram 和 Sieve of Atkin 生成素数列表的比较

windows - 如何在 LabVIEW 中获取所有 Windows 服务?

C# 将 ListBox.SelectedItems 复制到另一个变量

windows - 程序窗口自动截图

c++ - 通过引用返回一个 unique_ptr

c++ - 无锁引用计数和 C++ 智能指针

c++ - 异步中没有匹配函数(模板中未解析的类型)

windows - 如何使证书可信且有效期超过一年

javascript - 将值传递给弹出窗口