• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コールバック関数指定時のエラー)

コールバック関数指定時のエラー

このQ&Aのポイント
  • コールバック関数指定時にエラーが発生しています。
  • EnumWindows関数の第1引数の型が一致しないため、エラーが出ています。
  • ターゲット型と一致する関数が見つからない場合、エラーが発生します。

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

  • ベストアンサー
回答No.1

EnumWindowsを呼び出す前に BOOL EnumWindows(WNDENUMPROC lpEnumFunc , LPARAM lParam); と言うプロトタイプ宣言が必要です。 このプロトタイプ宣言をし忘れると、EnumWindowsの第一引数の関数の呼び出し規則が__stdcallとなり、宣言と一致しなくなります。 >キャストすればよいのかと思い下行のようにしました。 キャストは駄目です。呼び出し規則は変更出来ません。 呼び出し規則を無理矢理にキャストしてしまうと、呼び出し元と呼ばれた関数の整合性が取れなくなり、暴走したり、メモリリークしたり、致命的例外を発生したりしますので、通常はキャストできないようになっています。

acombun
質問者

お礼

その後、別なソースファイルに入れたところエラーが無くなりましたのでとりあえずそちらで対処することにしました。 どうもありがとうございました。

acombun
質問者

補足

早速の回答ありがとうございます。 試してみたのですが、下記のエラーになってしまいます。 error C2373: 'EnumWindows' : 再定義されています。異なる型修飾子です。 c:\program files\microsoft visual studio\vc98\include\winuser.h(6748) : 'EnumWindows' の宣言を確認してください。 何か他にご回答またはヒントがありましたらよろしくお願いいたします。

関連するQ&A