控制台布局编程小结

1、设置屏幕缓冲区大小API:

BOOL SetConsoleScreenBufferSize(
  HANDLE hConsoleOutput,
  COORD dwSize
);

2、设置窗口大小API:

BOOL SetConsoleWindowInfo(
  HANDLE hConsoleOutput,
  BOOL bAbsolute,
  const SMALL_RECT* lpConsoleWindow
);

3、实例:

 HANDLE g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);  // 控制台窗口句柄

  COORD bufferSize = {0};
  SMALL_RECT windowSize = {0};
  bufferSize.X = 80;      // 默认
  bufferSize.Y = 25;      // 默认
  windowSize.Right = 80;   // 默认
  windowSize.Bottom = 25;  // 默认
  ::SetConsoleScreenBufferSize(g_hStdout, bufferSize);
  ::SetConsoleWindowInfo(g_hStdout, TRUE, &windowSize);

注意:SetConsoleScreenBufferSize最好在SetConsoleWindowInfo前面,否则如果设置窗口的大小大于屏幕缓冲区大小的话,设置窗口大小失败。

4、COORD 的X和Y成员都是SHORT,SMALL_RECT的LEFT、RIGHT、TOP、BOTTOM成员也是SHORT。理论上他们的设置数值范围是0-32767,实际上并非如此。X的范围是80到32766,Y的范围是25到32766,不在这个范围的话设置就失败了。RIGHT和BOTTOM的设置范围分别是从2到X-1,Y-1,当X、Y是25、80时,RIGHT和BOTTOM可以设置成跟XY一样大小,否则任何时候只能设置为比XY小1,不然就设置失败了。

原文地址:https://www.cnblogs.com/yuohoo/p/wecan.html