调用SetConsoleScreenBufferInfoEx为何会导致控制台窗口缩小一行?
调用SetConsoleScreenBufferInfoEx后控制台窗口缩小一行的问题解决
调用WinAPI的SetConsoleScreenBufferInfoEx函数时会出现异常:哪怕只是读取控制台信息后原封不动写回,控制台窗口(非缓冲区)每次都会自动缩小一行。
复现代码
#include <windows.h> #include <stdio.h> int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFOEX info = {sizeof(info)}; if(!GetConsoleScreenBufferInfoEx(handle, &info)) { fprintf(stderr, "Error getting console info\n"); return 1; } // 未修改任何参数,直接写回控制台 SetConsoleScreenBufferInfoEx(handle, &info); printf("Hello, Console!\n"); return 0; }
解决方法
在调用SetConsoleScreenBufferInfoEx之前,将info.srWindow.Bottom的值加1,再执行写入操作即可避免窗口缩小的问题:
// 在Set之前添加该行代码 info.srWindow.Bottom += 1; SetConsoleScreenBufferInfoEx(handle, &info);
内容的提问来源于stack exchange,提问作者POLA-LCS
相关产品推荐
相关产品推荐

