声明SMALL_RECT={}不会调整控制台窗口的大小 我只是在C++中简单的控制台应用程序玩。
我正在尝试调整控制台窗口的大小,效果很好。首先我调整实际窗口的大小,然后调整缓冲区,一切正常,但一旦我尝试压缩代码,窗口就不再调整大小。其实没那么重要。我只是想知道,我看到的大多数建议都是这样声明声明SMALL_RECT={}不会调整控制台窗口的大小 我只是在C++中简单的控制台应用程序玩。,c++,windows,c++17,windows-console,C++,Windows,C++17,Windows Console,我正在尝试调整控制台窗口的大小,效果很好。首先我调整实际窗口的大小,然后调整缓冲区,一切正常,但一旦我尝试压缩代码,窗口就不再调整大小。其实没那么重要。我只是想知道,我看到的大多数建议都是这样声明SMALL\RECT 另外,我正在使用TDM-GCC64和Eclipse以及std=c++17 这可以正常工作,并且窗口的大小调整正确 void SetCMDSizeAndTitle(short width, short height, string title) { COORD coord =
SMALL\RECT
另外,我正在使用TDM-GCC64和Eclipse以及std=c++17
这可以正常工作,并且窗口的大小调整正确
void SetCMDSizeAndTitle(short width, short height, string title) {
COORD coord = { width, height };
SMALL_RECT rect;
rect.Top = 0;
rect.Left = 0;
rect.Bottom = height - 1;
rect.Right = width - 1;
SetConsoleTitle(TEXT(title.c_str()));
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &rect);
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
但是,这不起作用,窗口仍保持默认大小
void SetCMDSizeAndTitle(short width, short height, string title) {
COORD coord = { width, height };
SMALL_RECT rect = { 0, 0, height - 1, width -1 };
SetConsoleTitle(TEXT(title.c_str()));
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &rect);
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
这其实并不重要。当代码行数较少时,它会更好,我只是想知道为什么它不起作用。它不起作用的原因是,根据假设的顺序,变量不符合您假设的顺序。MSDN将结构定义为
typedef struct _SMALL_RECT {
SHORT Left;
SHORT Top;
SHORT Right;
SHORT Bottom;
}
这意味着您需要遵循初始化列表中的顺序。那意味着你应该
SMALL_RECT rect = {0, 0, width -1, height - 1};
// L T R B
@没问题。很乐意帮忙。