Visual Studio 2008 では(VS 2005でも同じ) MFC の関数や、Win32API 関数で引数に文字列を渡すとき _T("文字列") と書かないといけないようです。 たしか、Visual C++ 6.0 のときはいらなかったよなーと思ってたので、ちょっと調べてみました。 ちなみに、_T("")をつけないと下記のようなコンパイルエラーとなったりします。 エラー1error C2664: 'ShellExecuteW' : 2 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 詳しくは_T("")マクロだのL""マクロだのLPCTSTRだのの世界一詳しい解説で説明されてます。 要は、Visual Studio 2005 から文字列がマルチバイト(MBCS)からユニコード(wchar_t)に変わった
![(VC++)Windows環境でのcharの文字コード(マルチバイトとユニコード)で混乱 | old_3流プログラマのメモ書き](https://cdn-ak-scissors.b.st-hatena.com/image/square/dde2b47f7b2c24cadc287bc107cf33e6107d6850/height=288;version=1;width=512/https%3A%2F%2Fpds.exblog.jp%2Flogo%2F1%2F200510%2F05%2F63%2Fe009116320090131211041.jpg)