低レベル コンソール出力関数

重要

このドキュメントでは、エコシステム ロードマップの一部ではなくなったコンソール プラットフォームの機能について説明します。 このコンテンツを新しい製品で使用することはお勧めしませんが、今後も既存の使用をサポートし続けます。 推奨される最新のソリューションでは、クロスプラットフォーム シナリオでの互換性を最大限に高める仮想ターミナル シーケンスに重点を置いています。 この設計決定の詳細については、クラシック コンソールと仮想ターミナルのドキュメントを参照してください。

低レベルのコンソール出力関数を使用すると、スクリーン バッファーの文字セルに直接アクセスできます。 1 セットの関数は、コンソール スクリーン バッファー内の任意の場所から始まる連続するセルに対して読み取りまたは書き込みを行います。 別の関数セットは、セルの四角形のブロックから読み取りまたは書き込みを行います。

次の関数は、指定したセルから始まる、スクリーン バッファー内の指定された数の連続する文字セルから読み取りまたは書き込みを行います。

関数 説明
ReadConsoleOutputCharacter スクリーン バッファーから Unicode または ANSI 文字の文字列をコピーします。
WriteConsoleOutputCharacter Unicode または ANSI 文字の文字列をスクリーン バッファーに書き込みます。
ReadConsoleOutputAttribute スクリーン バッファーからテキストと背景色の属性の文字列をコピーします。
WriteConsoleOutputAttribute テキスト属性と背景色属性の文字列をスクリーン バッファーに書き込みます。
FillConsoleOutputCharacter スクリーン バッファー内の指定した数の連続するセルに、1 つの Unicode または ANSI 文字を書き込みます。
FillConsoleOutputAttribute テキストと背景色属性の組み合わせを、スクリーン バッファー内の指定された数の連続するセルに書き込みます。

これらのすべての関数について、行の最後のセルが検出されると、読み取りまたは書き込みが次の行の最初のセルに折り返されます。 コンソール スクリーン バッファーの最後の行の末尾が検出されると、書き込み関数は、すべての書き込みされていない文字または属性をディスカードし、読み取り関数は実際に書き込まれた文字または属性の数を報告します。

次の関数は、スクリーン バッファー内の指定した位置にある四角形の文字セル ブロックから読み取りまたは書き込みを行います。

関数 説明
ReadConsoleOutput 指定したスクリーン バッファー セルのブロックから宛先バッファー内の特定のブロックに文字と色のデータをコピーします。
WriteConsoleOutput ソース バッファー内の特定のブロックから、指定したスクリーン バッファー セル ブロックに文字データと色データを書き込みます。

これらの関数は、スクリーン バッファーとソース バッファーまたは宛先バッファーを CHAR_INFO 構造体の 2 次元配列として扱います (各セルの文字属性データと色属性データを含みます)。 この関数は、ソース バッファーまたは宛先バッファーの幅と高さを文字セル単位で指定し、バッファーへのポインターは 2 次元配列の原点セル (0,0) へのポインターとして扱われます。 この関数では、SMALL_RECT 構造体を使用してコンソール スクリーン バッファーでアクセスする四角形を指定し、ソース バッファーまたは宛先バッファーの左上のセルの座標によって、そのバッファー内の対応する四角形の場所が決まります。

これらの関数は、コンソール スクリーン バッファーの境界内に収まるように、指定されたスクリーン バッファーの四角形を自動的にクリップします。 たとえば、四角形が右下の座標 (列 100、行 50) を指定し、コンソール スクリーン バッファーの幅が 80 列のみである場合、座標はクリップされて (列 79、行 50) になります。 同様に、この調整された四角形は、ソース バッファーまたは宛先バッファーの境界内に収まるように再びクリップされます。 読み取りまたは書き込みが行われた実際の四角形のスクリーン バッファー座標が指定されます。 これらの関数を使用する例については、「文字と属性のブロックの読み取りと書き込み」を参照してください。

この図は、ブロックがコンソール スクリーン バッファーから読み取られ、ブロックが宛先バッファーにコピーされるときにクリッピングが発生する ReadConsoleOutput 操作を示しています。 この関数は、コピーした実際のスクリーン バッファーの四角形を報告します。

screen buffer window with destination buffer