• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Win32 APIウィンドウプロシージャの質問です)

Win32 APIウィンドウプロシージャの配列定義でのコンパイルエラー

このQ&Aのポイント
  • ウィンドウプロシージャ関数を配列で定義しようとした場合、コンパイルエラーが発生します。
  • 問題の解決方法を教えてください。
  • WinMain関数内での配列の定義方法が間違っている可能性があります。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

いま確認できる環境がありませんが。 WNDPROC (*finc[])() だと 『「WNDPROC 名前()というプロトタイプの関数」へのポインタ』の配列 である、配列fincの宣言になります。 よって、fincの各要素(finc[0],finc[1]...)は「引数無し、戻り値WNDPROCの関数へのポインタ」です。 それを、(WNDPROC)WndProcA,等と、WNDPROC型で初期化しようとしています。 「引数無し、戻り値WNDPROCの関数へのポインタ」 と 「WNDPROC型」は別のものでは? まずは、具体的にどんなエラーメッセージになっているか、書いてください。 「WNDPROCはWNDPROC (*)()に変換できない」とかいうものではないですか?

mtoffuji
質問者

補足

考察ありがとうございます。エラーメッセージは先の回答者さんに補足コメントしました。 やりたいことは、複数ウインドをループで作りたくウィンドウプロシージャ関数を配列にする必要があるち考えました。しかし、その後下記のように関数にすれば代用できると思いつき、試したところうまく実装できました。 WNDPROC getWndProc(int no){ WNDPROC f; switch(no){ case 1: f = WndProcA; break; case 2: f = WndProcB; break; case 3: f = WndProcC; break; } return f; } よって、本件の質問はCloseとさせていただきます。 お騒がせしました。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

私がわかるわけじゃないですが、なぜコンパイルエラーのエラーメッセージを書きませんか。

mtoffuji
質問者

補足

失礼しました。エラーメッセージは以下です。 1>c:\users\...\functable\source1.cpp(93) : error C2440: '初期化中' : 'WNDPROC' から 'WNDPROC (__cdecl *)(void)' に変換できません。 1> この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。

関連するQ&A