- 締切済み
_TCHAR、LPCWSTRについて
'MessageBoxW' : 2 番目の引数を '_TCHAR' から 'LPCWSTR' に変換できません。 というエラーが出ました。 いろいろHPを回って_TCHARはUnicodeの場合はw_char、マルチバイトのときはcharで処理されると書いてあったのですが、どうしても直せません。 現在Unicodeとマルチバイトの両方に対応させたプログラムを書きたいと思っています。 どうすればいいでしょうか。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- php504
- ベストアンサー率42% (926/2160)
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)
>'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)
ポインタを要求しているところにポインタじゃない変数を使っているようです 適切な型の引数を渡してくださいとしか答えようがないですね 該当する部分のコードを書いてもらえるともっと具体的に答えられるかもしれません
- pick52
- ベストアンサー率35% (166/466)
> LPCTSTRは Long Pointer Const STRing ↓ LPCTSTRは Long Pointer Const Type STRing Typeが抜けていました。
- pick52
- ベストアンサー率35% (166/466)
TCHARでなく、LPCTSTRでしょう。 TCHARは Type CHAR で、LPCTSTRは Long Pointer Const STRing です。 要はTCHARの定数ポインタ型です
補足
解答ありがとうございます。 /* エラーメッセージを表示して値を返却する */ 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); とこんな感じで使っています。