天天看点

【C语言】控制台窗口图形界面编程(三)窗口相关设置

00. 目录

文章目录

  • 00. 目录
  • 01. GetConsoleTitle函数
  • 02. SetConsoleTitle函数
  • 03. SetConsoleScreenBufferSize函数
  • 04. SetConsoleWindowInfo函数

01. GetConsoleTitle函数

获取当前控制台标题

​函数声明​

DWORD WINAPI GetConsoleTitle(
  _Out_ LPTSTR lpConsoleTitle,
  _In_  DWORD  nSize
);
功能:
  获取当前控制台标题

参数:
  lpConsoleTitle 指向缓冲区的指针,该缓冲区接收包含标题的以null结尾的字符串。如果缓冲区太小而无法存储标题,则该函数将存储符合缓冲区的标题字符,以空终止符结束。

  nSize 指向的缓冲区大小,以字符为单位。

返回值:
  如果函数成功,则返回值是控制台窗口标题的长度(以字符为单位)。

  如果函数失败,则返回值为零,GetLastError返回错误代码。      

​参考代码:​

char buf[255] = { 0 };
  //获取当前窗口标题
  GetConsoleTitle(buf, 255);
  printf("当前窗口标题为: %s\n", buf);      

官方参考网址:https://docs.microsoft.com/en-us/windows/console/getconsoletitle

02. SetConsoleTitle函数

设置当前控制台窗口标题

​函数声明:​

BOOL WINAPI SetConsoleTitle(
  _In_ LPCTSTR lpConsoleTitle
);
功能:
  设置当前控制台窗口标题

参数:
  lpConsoleTitle 要在控制台窗口的标题栏中显示的字符串。总大小必须小于64K。

返回值:
  如果函数成功,则返回值为非零值。
  如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。      
​注意​: 当进程终止时,系统将恢复原始控制台标题。

​参考代码:​

SetConsoleTitle("神马程序员");
  //获取当前窗口标题
  GetConsoleTitle(buf, 255);
  printf("当前窗口标题为: %s\n", buf);      

官方参考网址:https://docs.microsoft.com/en-us/windows/console/setconsoletitle

03. SetConsoleScreenBufferSize函数

设置指定控制台屏幕缓冲区的大小。

​函数声明:​

BOOL WINAPI SetConsoleScreenBufferSize(
  _In_ HANDLE hConsoleOutput,
  _In_ COORD  dwSize
);

功能:
  设置指定控制台屏幕缓冲区的大小。

参数:
  hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。
  dwSize 指定控制台屏幕缓冲区的新的大小,在字符行和列。指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。指定的尺寸也不能小于系统允许的最小尺寸。此最小值取决于控制台的当前字体大小(由用户选择)以及GetSystemMetrics函数返回的SM_CXMIN和SM_CYMIN值。

返回值:
  如果函数成功,则返回值为非零值。
  如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。      

​参考代码:​

COORD size = {80, 80};
  //获取标准输出句柄
  hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  //设置控制台缓冲区大小
  SetConsoleScreenBufferSize(hOut, size);      

官方参考网址:https://docs.microsoft.com/en-us/windows/console/setconsolescreenbuffersize

04. SetConsoleWindowInfo函数

设置控制台屏幕缓冲区窗口的当前大小和位置。

​函数声明:​

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

功能:
  设置控制台屏幕缓冲区窗口的当前大小和位置。

参数:
  hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。
  bAbsolute 如果此参数为TRUE,则坐标指定窗口的新左上角和右下角。如果为FALSE,则坐标相对于当前窗口角坐标。
  lpConsoleWindow 指向SMALL_RECT结构的指针,该结构指定窗口的新左上角和右下角。

返回值:
  如果函数成功,则返回值为非零值。
  如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。      

​参考代码:​

COORD size = {40, 20};
  SetConsoleScreenBufferSize(hOut, size);

  SMALL_RECT rect = { 0, 0, 40 - 1, 20 - 1 };
  SetConsoleWindowInfo(hOut, 1, &rect);