パラメータ
hConsoleHandle
コンソール入力バッファまたはコンソールスクリーンバッファのハンドルを指定する。このハンドルには、GENERIC_READ
アクセス権が必要で
ある。
lpMode
32 ビット変数へのポインタを指定する。指定したバッファの現在のモードを示す値が格納される。
hConsoleHandle に入力バッファのハンドルを指定した場合は、lpMode
が指す変数に次の値の組み合わせが格納される。コンソールの作]
成時、既定値で ENABLE_WINDOW_INPUT を除くすべての入力モードが有効になる。
定数
|
意味
|
ENABLE_LINE_INPUT
|
ReadFile 関数または ReadConsole
関数はキャリッジリターン文字を読み取ったときだけ制御を戻する。このモードが無効な場合、これらの関数は 1
つ以上の文字を読み取ると制御を戻す。 |
ENABLE_ECHO_INPUT
|
eadFile 関数または ReadConsole
関数で文字を読み取るたびにその文字がアクティブなスクリーンバッファに書き込まれる。このモードを有効にできるのは、ENABLE_LINE_INPUT
モードが有効な場合だけである。 |
ENABLE_PROCESSED_INPUT
|
CTRL+C
がシステムによって処理され、入力バッファに格納されない。ReadFile 関数または ReadConsole
関数で入力バッファの読み取りを行う場合、他の制御キーはシステムによって処理され、ReadFile 関数または ReadConsole
関数のバッファに返されない。ENABLE_LINE_INPUT
モードも有効になっている場合は、バックスペース文字、キャリッジリターン文字、ラインフィード文字がシステムによって処理される。 |
ENABLE_WINDOW_INPUT
|
コンソールスクリーンバッファのサイズを変更するためのユーザーとの対話がコンソールの入力バッファに報告される。これらのイベントに関する情報は、ReadConsoleInput
関数を使って入力バッファから読み取ることができる。しかし、ReadFile 関数または ReadConsole
関数を使って読み取ることはできない。 |
ENABLE_MOUSE_INPUT
|
マウスポインタがコンソールウィンドウの境界内にあり、ウィンドウがキーボードフォーカスを持っている場合、マウスを移動したりマウスボタンを押すことによって生成されるマウスイベントが入力バッファに置かれる。これらのイベントは、このモードが有効な場合でも、ReadFile
関数や ReadConsole 関数によって破棄される。 |
hConsoleHandle にスクリーンバッファのハンドルを指定した場合は、lpMode が指す変数に次の値の組み合わせが格納される。スクリーン
バッファの作成時、既定値で 2 つの出力モードがともに有効になる。
定数
|
意味
|
ENABLE_PROCESSED_OUTPUT
|
WriteFile 関数または WriteConsole
関数で書き込む文字、ReadFile 関数または ReadConsole 関数でエコーする文字が ASCII
チェック文字かどうか解析され、正しい動作が実行される。バックスペース文字、タブ文字、ベル文字、キャリッジリターン文字、ラインフィード文字が処理される。 |
ENABLE_WRAP_AT_EOL_OUTPUT
|
WriteFile 関数または WriteConsole
関数で書き込みをするとき、あるいは ReadFile 関数または ReadConsole
関数でエコーをするとき、カーソルが現在の行の終端に到達すると次の行の先頭に移動する。カーソルがウィンドウの最後の行から次の行に進むとき、コンソールウィンドウに表示されている行が自動的に上にスクロールする。また、カーソルがスクリーンバッファの最後の行から次の行に進むとき、スクリーンバッファの内容が上にスクロールする(スクリーンバッファの一番上の行が破棄される)。このモードが無効になっていると、行の最後の文字にそれ以降の文字が上書きされる。 |
戻り値
関数が成功すると、0 以外の値が返る。
関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。
解説
1 つのコンソールは、1 つの入力バッファと 1
つ以上のスクリーンバッファから構成される。コンソールバッファのモードは、入出力(I/O)操作中
のコンソールの動作を決定する。入力ハンドルとスクリーンバッファのハンドル(出力ハンドル)のぞれぞれに 1 セットずつのフラグ定数が使われ
る。特定のスクリーンバッファの出力モードが他のスクリーンバッファの出力モードに影響を与えることはない。
ENABLE_LINE_INPUT モードと ENABLE_ECHO_INPUT モードは、ReadFile 関数または
ReadConsole 関数を使ってコンソール入力
バッファから読み取りを行うプロセスにだけ影響する。同様に、ENABLE_PROCESSED_INPUT モードは主に ReadFile 関数または
ReadConsole 関数を使うプロセスに影響する。このモードはまた、CTRL+C
の入力が入力バッファで報告されるか(ReadConsoleInput 関数
によって読み取ることができるか)、アプリケーションで定義した関数に渡されるかも決定する。
ENABLE_WINDOW_INPUT モードと ENABLE_MOUSE_INPUT
モードは、ウィンドウのサイズ変更に関連するユーザーとの対話とマ
ウスの動作が報告されるか、破棄されるかを決定する。これらのイベントは、ReadConsoleInput
関数で読み取ることができるが、ReadFile
関数や ReadConsole 関数では常にフィルタにかけられる。
ENABLE_PROCESSED_OUTPUT モードと ENABLE_WRAP_AT_EOL_OUTPUT
モードは、ReadFile 関数または ReadConsole 関
数を使うプロセス、WriteFile 関数または WriteConsole 関数を使うプロセスにだけ影響する。
コンソールの I/O モードを変更するときは、SetConsoleMode 関数を使う。
|