#環境
windows 10 , visual studio2017
#試したこと
下のコードをご覧ください。
このサイトにあったコードをそのまま動かそうとしたらエラーが起きました。
(初期化するところは_Tマクロに変更しています。)
*/ #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { CHAR chStr[128]; wsprintf(chStr, _T("インスタンスハンドル : %d"), hInstance); //エラー 型 "CHAR *" の引数は型 "LPWSTR" のパラメーターと互換性がありません MessageBox(NULL, chStr, TEXT("Kitty on your lap"), MB_OK); //エラー 型 "CHAR *" の引数は型 "LPWSTR" のパラメーターと互換性がありません return 0; }
UNICODEで設定していました。
wsprintf(LPTSTR a, LPCTSTR b ・・・)
LPTSTRはunicode設定時はLPWSTRで、上のコードの第一引数にあたるchStr
はワイド文字列ではないので
ついでにCHAR chStr[128];をLPTSTR chStr;に変更したところ
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { LPTSTR chStr; wsprintf(chStr, _T("インスタンスハンドル : %d"), hInstance); MessageBox(NULL, chStr, TEXT("Test wsprintf"), MB_OK); return 0; } //エラー 初期化されていないchStrが使用されます。
第一引数は初期化されていないのが前提だと思うのですが、違うのでしょうか。上のエラーがさっぱりわかりません。
間違いがどこら辺にあるか指摘してくださいませんか。回答お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。