ウィンドウと画面バッファー サイズ

画面バッファーのサイズは、文字セルに基づいて座標グリッドの観点から表されます。 幅は各行の文字セルの数であり、高さは行数です。 各画面バッファには、コンソール ウィンドウに表示されるコンソール画面バッファの長方形部分のサイズと位置を決定するウィンドウが関連付けられています。 画面バッファーのウィンドウは、ウィンドウの四角形の左上と右下のセルの文字セル座標を指定することによって定義されます。

Note

仮想ターミナル シーケンスの世界では、ウィンドウのサイズと画面バッファーのサイズは同じ値に固定されます。 ターミナルは、画面バッファー サイズがウィンドウ サイズよりも大きいコンソールと同等のスクロールバック領域を処理します。 そのコンテンツはターミナルに属し、通常はアドレス指定可能領域の一部ではなくなります。 詳細については、クラシック コンソール関数と仮想ターミナル シーケンスの比較を参照してください。

画面バッファーは任意のサイズにすることができ、使用可能なメモリによってのみ制限されます。 画面バッファーのウィンドウのサイズは、コンソール画面バッファーまたは現在のフォント サイズに基づいて画面に収まる最大ウィンドウの対応するサイズを超えることはできません (ユーザーによって排他的に制御されます)。

GetConsoleScreenBufferInfo 関数は、画面バッファーとそのウィンドウに関する次の情報を返します。

  • コンソール画面バッファの現在のサイズ
  • ウィンドウの現在の位置
  • 現在の画面バッファー サイズ、現在のフォント サイズ、および画面サイズを指定したウィンドウの最大サイズ

GetLargestConsoleWindowSize関数は、現在のフォントと画面サイズに基づいて、コンソールのウィンドウの最大サイズを返します。 このサイズは、コンソール画面のバッファー サイズが無視されるという点で、GetConsoleScreenBufferInfoによって返される最大ウィンドウ サイズとは異なります。

画面バッファーのサイズを変更するには、SetConsoleScreenBufferSize関数を使用します。 この関数は、指定されたサイズのいずれかのディメンションがコンソールのウィンドウの対応するディメンションより小さい場合に失敗します。

画面バッファーのウィンドウのサイズまたは場所を変更するには、SetConsoleWindowInfo 関数を使用します。 指定されたウィンドウコーナー座標がコンソール画面バッファーまたは画面の制限を超えた場合、この関数は失敗します。 アクティブな画面バッファーのウィンドウ サイズを変更すると、画面に表示されるコンソール ウィンドウのサイズが変更されます。

プロセスは、コンソールの入力モードを変更してウィンドウ入力を有効にして、ユーザーがコンソール画面のバッファー サイズを変更したときにプロセスが入力を受け取ることができるようにすることができます。 アプリケーションでウィンドウ入力が有効な場合、GetConsoleScreenBufferInfoを使用して起動時にウィンドウと画面のバッファー サイズを取得できます。 この情報を使用して、ウィンドウにデータを表示する方法を決定できます。 ユーザーがコンソール画面のバッファー サイズを変更した場合、アプリケーションはデータの表示方法を変更することで応答できます。 たとえば、1 行あたりの文字数が変更された場合、アプリケーションは行の末尾でテキストの折り返し方法を調整できます。 アプリケーションがウィンドウ入力を有効にしない場合は、継承されたウィンドウと画面のバッファー サイズを使用するか、起動時に目的のサイズに設定し、終了時に継承されたサイズを復元する必要があります。 ウィンドウ入力モードの詳細については、「低レベルのコンソール モード」を参照してください。