win7(64bit)の悲劇 - どの「STR」が正解なのよ -

 まだまだ悲劇は終わらない…



 VC2003→VC2008への移行のお話。

 SetWindowText()あたりを使っているとわかるけど、

何かというと「w_char」を求められる…。

今までLPSTR(=char*)で済んだ箇所にもLPWSTRを求められること多数。

「TEXT()」マクロを使えば変換できるけど、リテラルのみ有効で変数では変換不可



……はっきり言ってメンドクサイ…。

というか、これまでの資産が途端に使えなくなるのはどうなのかね。



 …と、思っていたら、

プロジェクトの設定で切り替えられるのね、コレ。

プロジェクトのプロパティから

「文字セット」→「マルチバイト文字セットを使用する*1

でOK。

これでLPSTRで立ち回れるようになるはず。

(ちなみに、SetWindowText()で文字化けする現象もこれで回避できることアリ)


 ただし、中途半端にWCHARを使用していると

このあたりと似た症状が出ることがあるので、WCHARは根絶すること。




*1:初期値は多分「Unicodeを使用する」になっている