天天看點

【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);