_T("")マクロとは
プログラムの中で_T("")マクロが頻繁に使われている。
_T("")マクロは、ユニコードとマルチバイトの差異を解消するためのマクロ。
_T("文字列")としたときのの実際の動きを考えると、ユニコード設定ならL"文字列"として展開し、マルチバイト設定なら従来どおり"文字列"と展開される。
例えば _T("ABC")とプログラム中に書いた場合、
Unicodeが定義されたシステム内では、L"ABC"と書かれたのと同じ16ビットのワイド文字型になり、Unicodeが定義されていなければ、ただの"ABC"で書かれたのと同じ、8ビットのANSI文字列となる。
ではなぜ_T("")マクロを使う必要があるのか?
VisualC++ではビルド設定によって使用する文字セットをANSIにするかUnicodeにするかを切り替えることができる。
例えばUnicodeを使うなら、文字列定数は全て L"ABC"などのように定義する必要がある。マルチバイト文字セットを使用するなら、この「L」は必要ない。
そのどちらでも対応できるようにするのがTCHAR型の文字配列であり、TCHAR型に変換処理してくれるのが_T("")マクロである。
結局、どうすればいいのか?というと、Windowsプログラミングをするとき、文字列定数は"ABC"ではなく、常に_T("ABC")としておけばOKということだろう。