win7(64bit)の悲劇 - どの「STR」が正解なのよ -
まだまだ悲劇は終わらない…
VC2003→VC2008への移行のお話。
SetWindowText()あたりを使っているとわかるけど、
何かというと「w_char」を求められる…。
今までLPSTR(=char*)で済んだ箇所にもLPWSTRを求められること多数。
「TEXT()」マクロを使えば変換できるけど、リテラルのみ有効で変数では変換不可
……はっきり言ってメンドクサイ…。
というか、これまでの資産が途端に使えなくなるのはどうなのかね。
…と、思っていたら、
プロジェクトの設定で切り替えられるのね、コレ。
プロジェクトのプロパティから
「文字セット」→「マルチバイト文字セットを使用する*1」
でOK。
これでLPSTRで立ち回れるようになるはず。
(ちなみに、SetWindowText()で文字化けする現象もこれで回避できることアリ)
ただし、中途半端にWCHARを使用していると
このあたりと似た症状が出ることがあるので、WCHARは根絶すること。