電子書籍の厳選無料作品が豊富!

'MessageBoxW' : 2 番目の引数を '_TCHAR' から 'LPCWSTR' に変換できません。

というエラーが出ました。
いろいろHPを回って_TCHARはUnicodeの場合はw_char、マルチバイトのときはcharで処理されると書いてあったのですが、どうしても直せません。

現在Unicodeとマルチバイトの両方に対応させたプログラムを書きたいと思っています。
どうすればいいでしょうか。
よろしくお願いします。

A 回答 (5件)

inline _Ty ERROR_RETURN ( LPCTSTR msg , _Ty hr)


{
::MessageBox ( NULL , msg , TEXT("Error") , MB_OK );
return hr;
}
return ::ERROR_RETURN( TEXT("失敗しました"), E_FAIL );

にすれば良さそうな気がします
    • good
    • 0

>'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もありますから。
    • good
    • 0

ポインタを要求しているところにポインタじゃない変数を使っているようです


適切な型の引数を渡してくださいとしか答えようがないですね
該当する部分のコードを書いてもらえるともっと具体的に答えられるかもしれません

この回答への補足

解答ありがとうございます。
/*
エラーメッセージを表示して値を返却する
*/
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);

とこんな感じで使っています。

補足日時:2008/09/04 22:06
    • good
    • 0

> LPCTSTRは Long Pointer Const STRing



LPCTSTRは Long Pointer Const Type STRing

Typeが抜けていました。
    • good
    • 0

TCHARでなく、LPCTSTRでしょう。



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

参考URL:http://www.usefullcode.net/2006/11/tcharlpctstrl …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A