• 締切済み

_TCHAR、LPCWSTRについて

'MessageBoxW' : 2 番目の引数を '_TCHAR' から 'LPCWSTR' に変換できません。 というエラーが出ました。 いろいろHPを回って_TCHARはUnicodeの場合はw_char、マルチバイトのときはcharで処理されると書いてあったのですが、どうしても直せません。 現在Unicodeとマルチバイトの両方に対応させたプログラムを書きたいと思っています。 どうすればいいでしょうか。 よろしくお願いします。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.5

inline _Ty ERROR_RETURN ( LPCTSTR msg , _Ty hr) { ::MessageBox ( NULL , msg , TEXT("Error") , MB_OK ); return hr; } return ::ERROR_RETURN( TEXT("失敗しました"), E_FAIL ); にすれば良さそうな気がします

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

>'MessageBoxW' : 2 番目の引数を '_TCHAR' から 'LPCWSTR' に変換できません。 まずその部分のソースを見ないと分かりませんし、エラーはひとつひとつ潰していくしかないでしょう。 エラー内容を見る限り#3さんの指摘の通り2番目の引数に 「文字列」を指定するところに「文字」を指定していませんか? TCHAR a[100] = _T("あああ"); ::MessageBox( NULL , a , a , MB_OK ); としておけばマルチバイトでもUNICODEでもコンパイルは通るはずです。 --------------------------------------------------------------- 失礼ながらLPCTSTRの4文字目のTはTypeではなくTCHARだと思います。(Long Pointer Const Tchar STRing) LPCWSTR(Long Pointer Const Wchar_t STRing)やLPCSTRもありますから。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

ポインタを要求しているところにポインタじゃない変数を使っているようです 適切な型の引数を渡してくださいとしか答えようがないですね 該当する部分のコードを書いてもらえるともっと具体的に答えられるかもしれません

0xEF
質問者

補足

解答ありがとうございます。 /* エラーメッセージを表示して値を返却する */ template <class _Ty> inline _Ty ERROR_RETURN ( _TCHAR msg , _Ty hr) { ::MessageBox ( NULL , msg , "Error" , MB_OK ); return hr; } 現在はこんな感じで実装していて return ::ERROR_RETURN(_TCHAR("失敗しました"),E_FAIL); とこんな感じで使っています。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

> LPCTSTRは Long Pointer Const STRing ↓ LPCTSTRは Long Pointer Const Type STRing Typeが抜けていました。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.1

TCHARでなく、LPCTSTRでしょう。 TCHARは Type CHAR で、LPCTSTRは Long Pointer Const STRing です。 要はTCHARの定数ポインタ型です

参考URL:
http://www.usefullcode.net/2006/11/tcharlpctstrlptstr.html

関連するQ&A