高レベル コンソール モード
高レベルのコンソール関数の動作は、コンソールの入力モードと出力モードの影響を受けます。 コンソールの作成時に、次のすべてのコンソール入力モードがコンソールの入力バッファーに対して有効になります。
- 行入力モード
- 処理された入力モード
- エコー入力モード
コンソール スクリーン バッファーの作成時に、次のコンソール出力モードの両方が有効になります。
- 処理された出力モード
- EOL 出力モードでの折り返し
3 つの入力モードはすべて、処理された出力モードと共に連携するように設計されています。 これらのモードをすべてグループとして有効または無効にすることをお勧めします。 すべてが有効な場合、アプリケーションは「クックド」モードと言われます。つまり、ほとんどの処理がアプリケーションに対して処理されます。 すべてが無効になっている場合、アプリケーションは「RAW」モードになります。つまり、入力はフィルター処理されておらず、処理はすべてアプリケーションに任されます。
コンソールの入力バッファーまたはスクリーン バッファーの現在のモードを確認するには、アプリケーションは、GetConsoleMode 関数を使用できます。 SetConsoleMode 関数で次の値を使用して、これらのモードのいずれかを有効または無効にすることができます。 1 つのスクリーン バッファーの出力モードの設定が、その他のスクリーン バッファーの出力モードに影響することはありません。
hConsoleHandle パラメーターが入力ハンドルの場合、モードは次の値のいずれかまたは複数になります。 コンソールが作成されると、ENABLE_WINDOW_INPUT と ENABLE_VIRTUAL_TERMINAL_INPUT を除くすべての入力モードが既定で有効になります。
Value | 意味 |
---|---|
ENABLE_ECHO_INPUT 0x0004 | ReadFile または ReadConsole 関数によって読み取られた文字は、コンソールに入力されたときにアクティブな画面バッファーに書き込まれます。 このモードは、ENABLE_LINE_INPUT モードも有効な場合にのみ使用できます。 |
ENABLE_INSERT_MODE 0x0020 | 有効にすると、コンソール ウィンドウに入力されたテキストは現在のカーソル位置に挿入され、その位置以降のすべてのテキストは上書きされません。 無効にすると、以降のすべてのテキストは上書きされます。 |
ENABLE_LINE_INPUT 0x0002 | ReadFile または ReadConsole 関数は、復帰文字が読み取られた場合にのみ戻ります。 このモードが無効になっている場合、使用できる文字が 1 つ以上あると、関数は戻ります。 |
ENABLE_MOUSE_INPUT 0x0010 | マウス ポインターがコンソール ウィンドウの境界内にあり、ウィンドウにキーボード フォーカスがある場合、マウスの移動とボタンの押下によって生成されたマウス イベントが入力バッファーに格納されます。 これらのイベントは、このモードが有効な場合でも、ReadFile または ReadConsole によって破棄されます。 ReadConsoleInput 関数を使用して、入力バッファーから MOUSE_EVENT 入力レコードを読み取ることができます。 |
ENABLE_PROCESSED_INPUT 0x0001 | Ctrl + C キーはシステムによって処理され、入力バッファーには格納されません。 入力バッファーが ReadFile または ReadConsole によって読み取られている場合、他の Ctrl キーはシステムによって処理され、ReadFile または ReadConsole バッファーには返されません。 ENABLE_LINE_INPUT モードも有効な場合、BackSpace、復帰、および改行の各文字はシステムによって処理されます。 |
ENABLE_QUICK_EDIT_MODE 0x0040 | このフラグを使用すると、ユーザーはマウスを使用してテキストを選択および編集できるようになります。 このモードを有効にするには、ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS を使用します。 このモードを無効にするには、このフラグを使用せず、ENABLE_EXTENDED_FLAGS を使用します。 |
ENABLE_WINDOW_INPUT 0x0008 | コンソール画面バッファーのサイズを変更するユーザー操作は、コンソールの入力バッファーに報告されます。 アプリケーションを使用してこれらのイベントに関する情報を入力バッファーから読み取るには、ReadFile または ReadConsole ではなく、ReadConsoleInput 関数を使用します。 |
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 | このフラグを設定すると、仮想ターミナル処理エンジンにより、コンソール ウィンドウで受信したユーザー入力はコンソール仮想ターミナル シーケンスに変換されます。これは、サポートするアプリケーションから ReadFile または ReadConsole 関数を使用して取得できます。 このフラグの一般的な使用方法として、出力ハンドルに対する ENABLE_VIRTUAL_TERMINAL_PROCESSING と組み合わせて、仮想ターミナル シーケンス経由でのみ通信するアプリケーションに接続することが意図されています。 |
hConsoleHandle パラメーターが画面バッファー ハンドルの場合、モードは次の値のいずれかまたは複数になります。 画面バッファーが作成されると、両方の出力モードが既定で有効になります。
Value | 意味 |
---|---|
ENABLE_PROCESSED_OUTPUT 0x0001 | WriteFile または WriteConsole 関数によって書き込まれた文字、または ReadFile または ReadConsole 関数によってエコーされた文字は、ASCII 制御シーケンスのために解析され、正しいアクションが実行されます。 BackSpace、Tab、ベル、復帰、および改行の各文字が処理されます。 制御シーケンスの使用時、または ENABLE_VIRTUAL_TERMINAL_PROCESSING が設定されているときに有効にすることをお勧めします。 |
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 | WriteFile または WriteConsole を使用して書き込む場合、または ReadFile または ReadConsole を使用してエコーする場合、現在の行の末尾に達すると、カーソルは次の行の先頭に移動されます。 これにより、カーソルがウィンドウの最後の行を超えると、コンソール ウィンドウに表示される行は自動的に上にスクロールされます。 また、カーソルがコンソール画面バッファーの最後の行を超えると、コンソール画面バッファーの内容は上にスクロールされます (またはコンソール画面バッファーの一番上の行が破棄されます)。 このモードが無効になっている場合、行の最後の文字は後続の文字で上書きされます。 |
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 | WriteFile または WriteConsole を使用して書き込む場合、文字は、VT100 および同様の制御文字シーケンス (カーソルの移動、色またはフォントのモード、および既存のコンソール API を介して実行できるその他の操作を制御するもの) のために解析されます。 詳細については、「コンソール仮想ターミナル シーケンス」を参照してください。 このフラグを使用するときは、ENABLE_PROCESSED_OUTPUT が設定されていることを確認してください。 |
DISABLE_NEWLINE_AUTO_RETURN 0x0008 | WriteFile または WriteConsole を使用して書き込む場合、これにより行末の折り返しに状態が追加され、カーソルの移動とバッファーのスクロール操作が遅れる可能性があります。 通常、ENABLE_WRAP_AT_EOL_OUTPUT が設定され、テキストが行の末尾に達すると、カーソルはすぐに次の行に移動され、バッファーの内容は 1 行上にスクロールされます。 このフラグとは対照的に、カーソルは次の行に移動せず、スクロール操作は実行されません。 書き込まれた文字は行の最終的な位置に出力され、ENABLE_WRAP_AT_EOL_OUTPUT がオフの場合と同様にカーソルはこの文字の上のままですが、ENABLE_WRAP_AT_EOL_OUTPUT がオンである場合と同様に、次の出力可能な文字は出力されます。 上書きは行われません。 具体的には、カーソルは次の行にすばやく移動され、必要に応じてスクロールが実行され、文字が出力され、カーソルはもう 1 つ先の位置に移動されます。 このフラグの一般的な使用法として、ENABLE_VIRTUAL_TERMINAL_PROCESSING の設定と組み合わせて、ターミナル エミュレーターをより適切にエミュレートすることが意図されています。この場合、即時スクロールをトリガーせずに、画面 (右下隅) に最後の文字を書き込むことが望ましい動作です。 |
ENABLE_LVB_GRID_WORLDWIDE 0x0010 | WriteConsoleOutput や WriteConsoleOutputAttribute などの文字属性を書き込むための API を使用すると、文字属性のフラグを使用してテキストの前景と背景の色を調整できます。 さらに、COMMON_LVB プレフィックスを使用して DBCS フラグの範囲が指定されました。 従来、これらのフラグは、中国語、日本語、および韓国語の DBCS コード ページでのみ機能していました。 先頭バイトと末尾バイトのフラグを除く、線の描画と反転ビデオ (前景色と背景色を入れ替えるもの) を記述するその他のフラグは、他の言語で出力の一部を強調する場合に役立ちます。 このコンソール モード フラグを設定すると、これらの属性をすべての言語のすべてのコード ページで使用できるようになります。 これは既定でオフになっています。非 CJK マシンでこれらのフラグを無視してコンソールを利用して、故意または偶然にこれらのフィールドにビットを格納してきた既知のアプリケーションとの互換性を維持するためです。 ENABLE_VIRTUAL_TERMINAL_PROCESSING モードを使用すると、接続されたアプリケーションからコンソール仮想ターミナル シーケンスを介して下線または反転ビデオが要求される場合、このフラグがまだオフのときに、LVB グリッドと反転ビデオのフラグが設定される可能性があることに注意してください。 |