win32APIプログラミングの日本語文字列表示(変数)についてのメモ書きです。
下の環境に基づいています。
OS:WindowsXP
開発環境:Visual C++ 2008 Express Edition
win32APIのMessageBox関数で日本語表示するときはTEXTマクロを使って下のようなコードを書くと思います。
MessageBox(NULL , TEXT("日本語てすと") ,TEXT("") , MB_OK);
これはこれでいいのですが、これだと定数文字列なので、文字配列などの変数の文字列を同様に表示しようと下のようなコードを書いた場合、エラーが出ます。
・エラーが出るプログラム
char s[] = "にほんご日本語ニホンゴ";
MessageBox(NULL , TEXT(s) ,TEXT("") , MB_OK);
・エラー内容
: error C2065: 'Ls' : 定義されていない識別子です。
このエラーを回避するには、メニューバーの「プロジェクト」→「○○のプロパティ」でプロジェクトのプロパティページウインドウを開いて、「構成プロパティ」→「全般」→「文字セット」を、「Unicode文字セットを使用する」から「マルチバイト文字セットを使用する」に変更します。下の画像はそのときのウインドウです。
これで変数文字列の場合もエラーが出ずに日本語が出力できます。
だけど、この設定がなにか他に影響していないのか?ちと不安です・・・
・Win32を使ったWindowsプログラミング(GUI)のおすすめ入門書籍の紹介
- Windowsゲームプログラミング 第2版 Game Developer/赤坂 玲音
- ¥2,940
- Amazon.co.jp
- 猫でもわかるWindowsプログラミング 第3版 (猫でもわかるプログラミングシリーズ)/粂井 康孝
- ¥2,940
- Amazon.co.jp