Visual C++ における MBCS のサポート
MBCS をサポートしている Windows 上で、統合ソース コード エディター、デバッガー、コマンド ライン ツールなどを含む Visual C++ 開発システムを実行すると、メモリ ウィンドウを除いて MBCS に対応します。
メモリ ウィンドウは、データのバイトを ANSI または Unicode 文字としては解釈できますが、MBCS 文字としては解釈しません。 ANSI 文字のサイズは常に 1 バイトで、Unicode 文字のサイズは 2 バイトです。 MBCS では、文字のサイズは 1 バイトまたは 2 バイトで、その解釈は使用されているコード ページによって異なります。 このため、メモリ ウィンドウで MBCS 文字を確実に表示することは困難です。 メモリ ウィンドウでは、どのバイトで文字が開始されるかが識別できません。 開発者は、メモリ ウィンドウでバイト値を表示し、テーブル内の値を参照して文字表現を判断できます。 これが可能なのは、開発者はソース コードに基づいて文字列の開始アドレスがわかるためです。
Visual C++ は、適切な場所で 2 バイト文字を受け入れます。 これには、ダイアログ ボックスのパス名とファイル名、Visual C++ リソース エディターのテキスト エントリ (ダイアログ エディターの静的テキスト、アイコン エディターの静的テキスト エントリなど) が含まれます。 さらに、プリプロセッサは、#include
ステートメント内のファイル名や、code_seg
と data_seg
プラグマの引数として、一部の 2 バイト ディレクティブを認識します。 ソース コード エディターでは、コメントと文字列リテラルの 2 バイト文字を使用できます。ただし、C/C++ 言語要素 (変数名など) では使用できません。
Input Method Editor (IME) のサポート
MBCS を使用する東アジア市場 (日本など) 向けに作成されたアプリケーションでは、通常、1 バイト文字と 2 バイト文字の両方を入力するために Windows IME がサポートされます。 この Visual C++ 開発環境には、IME の完全なサポートが含まれます。
日本語のキーボードでは、漢字文字は直接はサポートされていません。 IME は、他の日本語のアルファベット (ローマ字、カタカナ、またはひらがな) で入力された音声文字列を、可能性のある漢字表現に変換します。 あいまいさがある場合は、いくつかの代替候補から選択できます。 目的の漢字文字を選択すると、IME は制御アプリケーションに 2 つの WM_CHAR
メッセージを渡します。
ALT + ` キーの組み合わせによってアクティブ化される IME は、一連のボタン (インジケーター) と変換ウィンドウとして表示されます。 アプリケーションは、テキストの挿入ポイントにウィンドウを配置します。 アプリケーションは、変換ウィンドウを移動してターゲット ウィンドウの新しい場所またはサイズに準拠することで、WM_MOVE
と WM_SIZE
メッセージを処理する必要があります。
アプリケーションのユーザーが漢字文字を入力できるようにする必要がある場合は、アプリケーションで Windows IME メッセージを処理する必要があります。 IME プログラミングの詳細については、入力方式マネージャに関する記事を参照してください。
Visual C++ デバッガー
この Visual C++ デバッガーは、IME メッセージにブレークポイントを設定する機能を提供します。 さらに、[メモリ] ウィンドウには 2 バイト文字を表示できます。
コマンド ライン ツール
コンパイラ、NMAKE、リソース コンパイラ (RC.EXE など) を含む Visual C++ のコマンド ライン ツールは MBCS 対応です。 リソース コンパイラの /c オプションを使用すると、アプリケーションのリソースをコンパイルするときに既定のコード ページを変更できます。
ソース コードのコンパイル時に既定のロケールを変更するには、#pragma setlocale を使用します。
グラフィカル ツール
Spy++ やリソース編集ツールなどの Visual C++ Windows ベースのツールでは、IME 文字列が完全にサポートされています。