Win32API コンソールスクリーンバッファ情報を取得する GetConsoleScreenBufferInfo
コンソールスクリーンバッファ情報を取得するには、GetConsoleScreenBufferInfo関数を用いる。
BOOL GetConsoleScreenBufferInfo( HANDLE hConsoleOutput, // コンソールスクリーンバッファのハンドル PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo // スクリーンバッファ情報のアドレス );
CONSOLE_SCREEN_BUFFER_INFO構造体は、wincon.h に以下のように定義されている。
typedef struct _CONSOLE_SCREEN_BUFFER_INFO { COORD dwSize; //スクリーンバッファの文字の列、行のサイズ COORD dwCursorPosition; //スクリーンバッファ中のカーソルの座標 WORD wAttributes; //クリーンバッファに出力される前景(テキスト)と背景の色の属性. SMALL_RECT srWindow; //ディスプレイウィンドウ上のスクリーンバッファの座標 COORD dwMaximumWindowSize; //コンソールウィンドウの最大サイズ } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
COORD構造体は、同じく wincon.h に以下のように定義されている。
typedef struct _COORD { SHORT X; SHORT Y; } COORD, *PCOORD;
SMALL_RECT構造体も、同じく wincon.h に以下のように定義されている。
typedef struct _SMALL_RECT { SHORT Left; SHORT Top; SHORT Right; SHORT Bottom; } SMALL_RECT, *PSMALL_RECT;
使用例
#include <windows.h> #include <stdio.h> int main() { BOOL bRet; CONSOLE_SCREEN_BUFFER_INFO info; bRet = GetConsoleScreenBufferInfo( GetStdHandle(STD_OUTPUT_HANDLE), &info); if (!bRet) { return 1; } printf("dwSize.X = %u\n", info.dwSize.X); printf("dwSize.Y = %u\n", info.dwSize.Y); printf("dwCursorPosition.X = %u\n", info.dwCursorPosition.X); printf("dwCursorPosition.Y = %u\n", info.dwCursorPosition.Y); printf("wAttributes = %u\n", info.wAttributes); printf("dwMaximumWindowSize.X = %u\n", info.dwMaximumWindowSize.X); printf("dwMaximumWindowSize.Y = %u\n", info.dwMaximumWindowSize.Y); printf("srWindow.Bottom = %u\n", info.srWindow.Bottom); printf("srWindow.Left = %u\n", info.srWindow.Left); printf("srWindow.Right = %u\n", info.srWindow.Right); printf("srWindow.Top = %u\n", info.srWindow.Top); return 0; }