API -3 お手本通りでエラー

 "Express" でWindowsプログラムを作る環境を整えたところで、本を見ながらAPIの勉強開始。

 いきなりでした。

 本に載っている、一番初めのプログラム。
 何もしない、ただ、ウィンドウを表示するだけのプログラム。

 なのに、エラー。

 本と見比べてみても、どこにも間違いはなし。

 CreateWindow関数の第1引数の型が違うとのこと。
 引数はLPCTSTR型。文字を入れたのはchar型変数。
 以前、ボーランドのコンパイラで作ったときは問題なかったのですが、Expressではエラーとなるようです。

 さて、LPCTSTR型って、なんでしょう?

 WinMain関数の第3引数、LPSTR型は文字列へのポインタと書いてあります。
 が、LPCTSTR型については、何も書いてありません。似た名前だし、文字列型の1種であるとは思うものの、違いは何なのか、まったくわかりません。

 調べてみると、
"LPSTR"→"char*"
"LPCTSTR"→"CONST TCHAR*"
とのこと。
 TCHARは、UNICODE対応の環境ではWCHARとして、そうでなければcharとして扱われる型。

 つまり、
"LPCTSTR"→"WCHAR"or"char"
となっているところを、
"char"→"WCHAR"or"char"
としてしまっていたわけです。

 そんなわけで、char型をTCHAR型に変更。
 これで、コンパイルできました。


 いまさらながら、exeファイル作成は"Debug"と"Release"のモードごとに設定されていることに気付く。
 つまり、"Debug"と"Release"を切り替えると、設定も切り替わるということ。

0 件のコメント:

コメントを投稿