※ ChatGPTを利用し、要約された質問です(原文:VisualStudio2005C++の某参考書のプログラムでエラー)
VisualStudio2005C++の参考書のプログラムでエラー
このQ&Aのポイント
VisualStudio2005でC++の勉強中に、プログラムのエラーが発生しました。
参考書通りに書いたつもりの「Hello, Visual C++」の表示プログラムで、エラーが出ています。
エラーメッセージは「error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : 3 番目の引数を 'const char [19]' から 'const CString &' に変換できません」となっています。
VisualStudio2005C++の某参考書のプログラムでエラー
最近VisualStudio2005でC++を勉強しているものです。
そこで、まずは画面に「Hello, Visual C++」と表示させる
プログラムを参考書通りに書き換えたつもり(?)なのですが、
エラーがでます。
どなたか理由を教えてください。人生初のC++で出だしからつまづくなんて・・・
以下がそのプログラムです。
// helloVCView.cpp : ChelloVCView クラスの実装
//
#include "stdafx.h"
#include "helloVC.h"
#include "helloVCDoc.h"
#include "helloVCView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// ChelloVCView
IMPLEMENT_DYNCREATE(ChelloVCView, CView)
BEGIN_MESSAGE_MAP(ChelloVCView, CView)
// 標準印刷コマンド
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
END_MESSAGE_MAP()
// ChelloVCView コンストラクション/デストラクション
ChelloVCView::ChelloVCView()
{
// TODO: 構築コードをここに追加します。
}
ChelloVCView::~ChelloVCView()
{
}
BOOL ChelloVCView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
// 修正してください。
return CView::PreCreateWindow(cs);
}
// ChelloVCView 描画
void ChelloVCView::OnDraw(CDC* pDC)
{
ChelloVCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: この場所にネイティブ データ用の描画コードを追加します。
pDC->TextOut(0, 0, "Hellow, Visual C++");
}
// ChelloVCView 印刷
BOOL ChelloVCView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 既定の印刷準備
return DoPreparePrinting(pInfo);
}
void ChelloVCView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 印刷前の特別な初期化処理を追加してください。
}
void ChelloVCView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 印刷後の後処理を追加してください。
}
// ChelloVCView 診断
#ifdef _DEBUG
void ChelloVCView::AssertValid() const
{
CView::AssertValid();
}
void ChelloVCView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
ChelloVCDoc* ChelloVCView::GetDocument() const // デバッグ以外のバージョンはインラインです。
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(ChelloVCDoc)));
return (ChelloVCDoc*)m_pDocument;
}
#endif //_DEBUG
// ChelloVCView メッセージ ハンドラ
これでデバッグすると、
以下の文言が・・・
------ ビルド開始: プロジェクト: helloVC, 構成: Debug Win32 ------
コンパイルしています...
helloVCView.cpp
c:\documents and settings\hellovc\hellovc\hellovcview.cpp(56) : error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : 3 番目の引数を 'const char [19]' から 'const CString &' に変換できません。(新しい機能 ; ヘルプを参照)
理由: 'const char [19]' から 'const CString' へは変換できません。
class 'ATL::CStringT<BaseType,StringTraits>' のコンストラクタが 'explicit' と宣言されています。
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
ビルドログは "file://c:\Documents and Settings\helloVC\helloVC\Debug\BuildLog.htm" に保存されました。
helloVC - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
========== 配置: 0 正常終了、0 失敗、0 スキップ ==========
この情報だけで、
何か間違いが見つかるんでしょうか。
なにせ超初心者なので、
何が何だかでパニックってます。
どうぞお力をお貸し下さい。
お礼
redfox63様へ 早速の回答ありがとうございました。 うまく走ることができました。 今、すごい感激です。 生まれて初めてプログラムを走らせたなんて♪ _Tマクロ、_TEXTマクロ ってなんですか・・・ 今持ってる参考書は 「明快入門Visual C++2005 ビギナー編」 なんですが、 そこに書いている通りに打ち込んでエラーがでたのです。 この本って、あまりよくないのでしょうか。 _Tマクロ、_TEXTマクロの事かいてないのですが・・・ 質問攻めですいません。 とにかく、 走ったので、すごく嬉しいです。