C++ 自定义控制台不允许输入或 Lua print 或 io.write

我目前正在使用 Win32 API 以及 Lua 进行开发。我使用了一个旧的框架,该框架我之前用于小型项目。目前我有一个来自 Win32 API 的窗口。但问题是,我想要一个调试控制台,类似于 GLFW 和 GLEW。所以我决定自己编写一个。但由于某种原因,它并不真正实用。它目前的主要问题是,当我将 C++ 和 Lua 连接在一起时,它无法识别或打印来自 Lua 脚本的 Lua 函数内容。 以下是我用于控制台的代码

void AbstractWindow::MakeDebugConsole(void)
{
    #if _DEBUG
        DWORD mode;
        _CONSOLE_SCREEN_BUFFER_INFO sbi;
        HANDLE h_console;
        FILE* stream;
        // 为调用进程分配一个新的控制台。
        AllocConsole();
        // 设置控制台窗口的标题。
        SetConsoleTitle("DEBUG CONSOLE");
        // 获取标准输入设备的句柄。
        h_console = GetStdHandle(STD_INPUT_HANDLE);
        // 检索控制台输入缓冲区的当前输入模式
        // 或控制台屏幕缓冲区的当前输出模式。
        GetConsoleMode(h_console, (LPDWORD)&mode);
        // 设置控制台输入缓冲区的输入模式
        // 或控制台屏幕缓冲区的输出模式。
        SetConsoleMode(h_console, mode & 0xFFFFFFEF);
        // 检索有关指定控制台屏幕缓冲区的信息。
        GetConsoleScreenBufferInfo(h_console, &sbi);
        // 设置控制台屏幕缓冲区的大小
        sbi.dwSize.Y = 500;
        SetConsoleScreenBufferSize(h_console, sbi.dwSize);
        // 重新分配文件指针
        (&stream, "conin$", "r", stdin);
        freopen_s(&stream, "conout$", "w", stdout);
        freopen_s(&stream, "conout$", "w", stderr);
    #endif
}
点赞