• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual C++)

Visual C++の入門本でエラーが出る理由はバージョンの違いか?

このQ&Aのポイント
  • Visual C++の入門本を開いたばかりの超初心者がプログラムをビルドする際にエラーが発生しています。
  • エラーメッセージは「error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)」です。
  • 書籍はVC++5.0/6.0対応で、使っているのはVisual Studio2005のVC++です。バージョンの違いが原因と考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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とは何か"についてはご勘弁。 掲示板で語る分量を超えます。

noname#25535
質問者

お礼

無事にビルドできました! Unicodeの意味やTEXT()をつける意味などは調べてみます。 少し光が見えたようで助かりました。ありがとうございました。

その他の回答 (2)

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.2

私も同様に 山のようなエラーに遭遇しています。 VC++6.0と2005は別物 と考えた方が良いと思います。 ソースコードが vc++6.0では 大変なだけです。  本に会わせるか コンパイラに本を合わせるかしないと 先には進めません。

noname#25535
質問者

お礼

ありがとうございます。どうやら色々な人の過去の投稿を見ていても、そんな感じですね・・・。 どちらかを合わせることも考慮に入れていきます。

回答No.1

エラーとなったコードを示してください。 # おそらくはVC++8から文字のデフォルトが # Unicodeになったことに起因しています。 それとタイトルは適切に。質問の内容を端的に表してください。 単に"Visual C++"ではどんな質問やらわかりません。

noname#25535
質問者

補足

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とは何でしょうか?自分で調べても分からないかもしれないので、ヒントだけでもいただけたら幸いです。お手数ですがお願いいします。

関連するQ&A

専門家に質問してみよう