- ベストアンサー
Visual C++の入門本でエラーが出る理由はバージョンの違いか?
- Visual C++の入門本を開いたばかりの超初心者がプログラムをビルドする際にエラーが発生しています。
- エラーメッセージは「error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)」です。
- 書籍はVC++5.0/6.0対応で、使っているのはVisual Studio2005のVC++です。バージョンの違いが原因と考えられます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SYSTEMTIME tm; TCHAR s[80]; int iRet; GetLocalTime(&tm); if ((tm.wHour >= 0) && (tm.wHour < 12)) { lstrcpy(s, TEXT("おはようございます。")); } else if (tm.wHour < 17) { lstrcpy(s, TEXT("こんにちは。")); } else { lstrcpy(s, TEXT("こんばんは。")); } iRet = MessageBox(NULL, s, TEXT("MsgBox"), MB_OK); return 0; } "Unicodeとは何か"についてはご勘弁。 掲示板で語る分量を超えます。
その他の回答 (2)
- uyama33
- ベストアンサー率30% (137/450)
私も同様に 山のようなエラーに遭遇しています。 VC++6.0と2005は別物 と考えた方が良いと思います。 ソースコードが vc++6.0では 大変なだけです。 本に会わせるか コンパイラに本を合わせるかしないと 先には進めません。
お礼
ありがとうございます。どうやら色々な人の過去の投稿を見ていても、そんな感じですね・・・。 どちらかを合わせることも考慮に入れていきます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
エラーとなったコードを示してください。 # おそらくはVC++8から文字のデフォルトが # Unicodeになったことに起因しています。 それとタイトルは適切に。質問の内容を端的に表してください。 単に"Visual C++"ではどんな質問やらわかりません。
補足
epistemeさん、回答ありがとうございます。慣れないもので、これからもう少し題名考えます。早速ですが、どのコードを抜き出せばいいのか分からないので全文書かせていただきました。 #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SYSTEMTIME tm; char s[80]; int iRet; GetLocalTime(&tm); if ((tm.wHour >= 0) && (tm.wHour < 12)) { ★ lstrcpy(s, "おはようございます。"); } else if (tm.wHour < 17) { ★ lstrcpy(s, "こんにちは。"); } else { ★ lstrcpy(s, "こんばんは。"); } ★ iRet = MessageBox(NULL, s, "MsgBox", MB_OK); return 0; } ★をつけた行に上記のようなエラーが出ます。 Unicodeとは何でしょうか?自分で調べても分からないかもしれないので、ヒントだけでもいただけたら幸いです。お手数ですがお願いいします。
お礼
無事にビルドできました! Unicodeの意味やTEXT()をつける意味などは調べてみます。 少し光が見えたようで助かりました。ありがとうございました。