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文字セットを使用する」から「マルチバイト文字セットを使用する」に変更します。下の画像はそのときのウインドウです。



仕事,ITの忘備録inアメブロ-messagebox_japanese


これで変数文字列の場合もエラーが出ずに日本語が出力できます。


だけど、この設定がなにか他に影響していないのか?ちと不安です・・・


・Win32を使ったWindowsプログラミング(GUI)のおすすめ入門書籍の紹介


Windowsゲームプログラミング 第2版 Game Developer/赤坂 玲音
¥2,940
Amazon.co.jp

猫でもわかるWindowsプログラミング 第3版 (猫でもわかるプログラミングシリーズ)/粂井 康孝
¥2,940
Amazon.co.jp