• ベストアンサー

エラーメッセージの読み方について教えてください

Borlandc++でコンパイルした時の、エラーメッセージを読むために、いろいろ検索して調べたのですが、詳しく解説してある所が見つかりませんでした。 例えば、 警告 w8057      エラー E2127 エラー E2041 などの意味を知りたいのですが、参考に出来るところをご存知の方、 アドバイスをお願いします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.13

★原因は wc.hCursor を設定していなかった。 ・ウィンドウクラスの登録 InitApp() 関数の構造体メンバ wc.hCursor にカーソルの  ハンドルをセットしていないのでウインドウが正しく表示されなかったようです。  マウスカーソルのハンドルをセットしてコンパイルすると表示され、コメントアウト  すると正常にコンパイルできても実行時に表示されなくなりました。お陰で今後の  ちょっとしたミスに気づく良い経験になりました。有り難うございます。 ・要するに sakusaker7 さんのアドバイス通りですね。ただし、 >InitApp で登録しようとしている情報で、hIconメンバーに対する代入を行っていませんが >ポカミスですか?  は『hIcon』ではなく『hCursor』ですね。→sakusaker7 さんもポカミスですね(笑) その他: ・LoadImage() 関数の引数が多いため便利マクロ関数を紹介します。  #define MacroLoadIcon(inst,id)  (HICON)LoadImage(inst,id,IMAGE_ICON,0,0,LR_DEFAULTSIZE | LR_SHARED)  #define MacroLoadCursor(inst,id) (HCURSOR)LoadImage(inst,id,IMAGE_CURSOR,0,0,LR_DEFAULTSIZE | LR_SHARED)  マクロ関数名は適当に変更してお使い下さい。  使い方は InitApp() 関数を例に  wc.hIcon = MacroLoadIcon( NULL, MAKEINTRESOURCE(IDI_APPLICATION) );  wc.hIconSm = MacroLoadIcon( NULL, MAKEINTRESOURCE(IDI_APPLICATION) );  wc.hCursor = MacroLoadCursor( NULL, MAKEINTRESOURCE(IDC_ARROW) );  と使います。『inst』がインスタンスハンドルで『id』が識別文字列です。 ・このマクロ関数は、LoadIcon()、LoadCursor() 関数に合わせて命名と引数を決めています。  実際の LoadIcon()、LoadCursor() 関数を使っても良いが、MSDN マニュアルに >注意 この関数は、LoadImage 関数に取って代わられました。  となっています。もう古い関数群ですので今後は LoadImage() 関数を使えって事かな。  そこで参考にしている『猫でもわかるwindowsプログラミング』の本は積極的に  LoadImage() 関数を使っているようだ。 ・私も普段は LoadImage() 関数をマクロ定義して使っている。→上記で紹介したマクロだ。  ただし、マクロ名を TipAPILoadIcon、TipAPILoadCurosor として使っています。  他にもたくさんのマクロ関数を定義して使っています。 ・もう一つ『break』付きの case、default キーワードを紹介します。  #define CASE   break;case  #define DEFAULT break;default  使い方はウィンドウプロシージャを例に  switch(msg){   CASE WM_CREATE:    /* 処理 */   CASE WM_COMMAND:    /* 処理 */   CASE WM_PAINT:    /* 処理 */   CASE WM_CLOSE:    /* 処理 */   CASE WM_DESTROY:    PostQuitMessage(0);   DEFAULT:   return DefWindowProc(hWnd, msg, wp, lp );  }  と使います。switch 文の多くは break して抜けることが多いため私は CASE、DEFAULT の  記号定数キーワードを使っています。本来の case、default と分けるために大文字にしています。  また、break なしの CASE を使いたいときは本来の case を記述すればよい。  良かったらお使い下さい。→使うときにはヘッダ部に記述するとか他の人でも分かりやすくしておく。 ・以上。おわり。

noname#220054
質問者

お礼

貴重な時間を割いてのアドバイス、有難うございます。 ご指摘のとおり 『wc.hCursor = (HCURSOR)LoadImage()~』の、ハンドルが設定してありませんでした、 ソースを書き直すたびに何度も確認をしたのですが、『コンパイルが来た』と言うだけで別に原因があるものと思い込んでいたようです。 確認がおろそかでした。今は無事実行することが出来、『画面の表示も出来ます。』本当に有難うございました。 また、参考となるアドバイスをたくさんして頂きとても感謝しています。これからの学習にとても助かります。 まだ未熟なためご迷惑をおかけしました。 有難うございました。

その他の回答 (12)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★あっ、コンパイルエラーでしたね。 ・エラー数値にはあまり考えたことがないが、コンパイルエラーは処理系で違うような  気がします。→あくまで推測。 ・昔、MSC というマイクロソフト社のコンパイラを使っていたときは、エラーを表示する  ファイルがあってコンパイラがそのファイルから文字列を読み込んで表示していました。  このため、フリーデータとして Vector さんの所に日本語訳したエラーファイルがアップ  されていました。ダウンロードしてファイルを入れ替えるだけで日本語表示になって  とても助かりました。という過去があります。 ・今もそのフリーデータはダウンロードできます(↓)  http://www.vector.co.jp/soft/dos/prog/se001216.html→『MS-C V5 の日本語エラーメッセージファイル』  http://www.vector.co.jp/soft/dos/prog/se001215.html→『MS-C V6 の日本語エラーメッセージファイル』 ・『Borland C/C++』は使ったことがないのでよく分かりません。ごめんね。  でもコンパイル・エラーの英語メッセージなどを貼り付けてくれたらば、分かるかもしれませんよ。  という事で、補足を待っています。それでは。また。

noname#220054
質問者

補足

丁寧なアドバイスありがとうございます。コンパイル時のエラーメッセージは日本語で表示されているのですが、『その表示されているメッセージの詳細がエラー番号の一覧表に書いてある』ものと考えていました。 例えば エラー E2293 windows_sample2.cpp 82: ) が必要(関数 WndProc ) エラー E2451 windows_sample2.cpp 84: 未定義のシンボル return0(関数 WndProc ) と表示された時に、E2451の一覧表を調べれば、そのエラーの詳細が書いてあるものと思っていました。でも今回のアドバイスで、メッセージ内容の詳細は無く、メッセージをよく理解して対処しないといけないことに気づきました。(理解するのが難しいのですが…) こちらのエラーメッセージは何とか改善されたのですが理解できないエラーメッセージがあります、 D:\borland\bcc55\lesson>bcc32 -w-8057 sample1.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland sample1.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_main' が未解決(C:\PROGRAM FILES\BORLAND\BCC55\LIB\C0X32.OBJ が参照) この『外部シンボル'_main'~\CO~×32.OBJが参照』の意味がわかりません。Cドライブの\LIBを開いてみたのですがわかりませんでしたこの様なメッセージは、どのように調べたらいいのでしょうかアドバイスをお願いします。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★参考に。 ・http://www.vector.co.jp/soft/win95/prog/se136925.html→『Win32APIのエラーコードの説明文を出力』 ・http://homepage3.nifty.com/aokura/src/winerror.html→『エラーコードの内容を Excel 用 CSV 形式ファイルで出力』 ・http://gimite.net/bcbqtree/qtreemain.cgi?mode=category&category=_5→『謎のエラーメッセージに出会ったらこちら。』 ・以上。おわり。

参考URL:
http://www.vector.co.jp/soft/win95/prog/se136925.html
noname#220054
質問者

補足

回答ありがとうございます。「Win32API」の、エラーコードの意味がわからなかったのですが、とても参考になりました。 初歩的な質問なのですが、「Win32API」のエラーコードは、コンパイラに関係なく同じ内容を表示すると思うのですが、「C言語」をコンパイルした時のエラーコードは、コンパイラによって変わってしまいますか? よろしくお願いします。 

関連するQ&A

専門家に質問してみよう