WriteConsole

https://msdn.microsoft.com/ja-jp/library/ms648394.aspx

コンソールスクリーンバッファの現在のカーソル位置に文字列を挿入します。

BOOL WriteConsole(
  HANDLE hConsoleOutput, // コンソールスクリーンバッファのハンドル
  CONST VOID *lpBuffer,  // 書き込む文字列が入ったバッファ
  DWORD nNumberOfCharsToWrite,
                         // 書き込む文字数
  LPDWORD lpNumberOfCharsWritten,
                         // 書き込まれた文字数へのポインタ
  LPVOID lpReserved      // 予約済み
);

パラメータ

hConsoleOutput
書き込み先コンソールスクリーンバッファのハンドルを指定します。このハンドルには、GENERIC_WRITE アクセス権が必要です。
lpBuffer
スクリーンバッファに書き込む文字が入ったバッファへのポインタを指定します。
nNumberOfCharsToWrite
スクリーンバッファに書き込む文字数を指定します。
lpNumberOfCharsWritten
スクリーンバッファに実際に書き込まれた文字数を受け取る 32 ビット変数へのポインタを指定します。
lpReserved
予約済み。必ず NULL を指定してください。

戻り値

関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。

解説

WriteConsole 関数は、コンソールスクリーンバッファに文字を書き込みます。WriteFile 関数に似た動作をしますが、WriteConsole 関数は Unicode( ワイド文字)と ANSI のどちらのモードでも書き込みが可能です。両方のモードと互換性のある出力元を 1 セットだけ保持するアプリケーションを作成する場合は、WriteFile 関数ではなく WriteConsole 関数を使います。WriteConsole 関数に渡すことができるのは、コンソールスクリーンバッファのハンドルだけですが、WriteFile 関数には他のハンドル( ファイルやパイプなど)も渡すことができます。WriteConsole 関数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗します。
WriteConsole 関数の ANSI モードを使って ANSI 文字を書き込むことはできますが、コンソールは ANSI エスケープシーケンスをサポートしません。同等の機能は、SetCursorPosSetConsoleTextAttributeGetConsoleCursorInf などの一部の Win32 関数が提供します。
WriteConsole 関数は、スクリーンバッファの現在の位置に文字を書き込みます。文字を書き込むたびにカーソルの位置が進みます。現在のカーソル位置を設定するときは、SetConsoleCursorPosition 関数を使います。
文字を書き込むときは、スクリーンバッファに設定されている前景色と背景色の属性が使われます。これらの色を変更するには、SetConsoleTextAttribute 関数を使います。現在の色属性と現在のカーソル位置を調べるには、GetConsoleScreenBufferInfo 関数を使います。
WriteFile 関数の動作に影響を与える入力モードはすべて WriteConsole 関数にも同じ影響を与えます。コンソールスクリーンバッファの出力モードの取得と設定は、それぞれ GetConsoleMode 関数と SetConsoleMode 関数を使って行います。
Windows NT/2000:この関数は、コンソールの現在のコードページにある Unicode 文字または 8 ビット文字のいずれかを使います。コンソールのコードページは、既定値でシステムの OEM コードページに初期設定されます。コンソールのコードページを変更するには、SetConsoleCP 関数、SetConsoleOutputCP 関数、chcp コマンド、mode con cp select= コマンドのいずれかを使います。

対応情報

  Windows NT/2000:Windows NT 3.1 以降
  Windows 95/98:Windows 95 以降
  ヘッダー:wincon.h 内で宣言
  インポートライブラリ:kernel32.lib を使用
  Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

GetConsoleCursorInfoGetConsoleModeGetConsoleScreenBufferInfoReadConsoleSetConsoleCPSetConsoleCursorPositionSetConsoleModeSetConsoleOutputCPSetConsoleTextAttribute、、WriteFile

表示: