![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ウィンドウプロシージャ関数を以下の様に配列で定義したいのですが、コンパイルエラーとなってしまいます。この問題の解決方法をご存知の方がおりましたらご教示ください。
LRESULT CALLBACK WndProcA(…) {
return DefWindowProc (…) ;
}
LRESULT CALLBACK WndProcB(…) {
return DefWindowProc (…) ;
}
LRESULT CALLBACK WndProcC(…) {
return DefWindowProc (…) ;
}
int WINAPI WinMain(…){
static WNDPROC (*finc[])() = {
(WNDPROC)WndProcA,
(WNDPROC)WndProcB,
(WNDPROC)WndProcC
};
No.2ベストアンサー
- 回答日時:
いま確認できる環境がありませんが。
WNDPROC (*finc[])()
だと
『「WNDPROC 名前()というプロトタイプの関数」へのポインタ』の配列
である、配列fincの宣言になります。
よって、fincの各要素(finc[0],finc[1]...)は「引数無し、戻り値WNDPROCの関数へのポインタ」です。
それを、(WNDPROC)WndProcA,等と、WNDPROC型で初期化しようとしています。
「引数無し、戻り値WNDPROCの関数へのポインタ」 と 「WNDPROC型」は別のものでは?
まずは、具体的にどんなエラーメッセージになっているか、書いてください。
「WNDPROCはWNDPROC (*)()に変換できない」とかいうものではないですか?
この回答への補足
考察ありがとうございます。エラーメッセージは先の回答者さんに補足コメントしました。
やりたいことは、複数ウインドをループで作りたくウィンドウプロシージャ関数を配列にする必要があるち考えました。しかし、その後下記のように関数にすれば代用できると思いつき、試したところうまく実装できました。
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とさせていただきます。
お騒がせしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- 統計学 機械学習(最適化問題)のプログラムで、以下の2つの関数がどんな関数なのかご存知の方はおりますか? d 5 2022/06/23 00:35
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# int tff(int clk) { static int state = 0; //状態 stat 1 2022/07/11 21:14
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
セグメントエラー
-
Run-Time Check Failure #3とい...
-
C言語でのconstを返す関数
-
fopne で失敗する原因
-
参照型で受け取った引数をポイ...
-
アプリを32bitから64bit移行
-
構造体とfscanf
-
NULLとブランクの違い
-
init関数の意味
-
C# PictureBox について
-
CWnd::EnableWindow()の扱い方
-
VB6でのgethostbyaddrの使用方...
-
関数ポインタの高速化のメリット
-
[C言語]単連結リストにおける着...
-
プログラミングのfarについて
-
C++ Builderでのnewコマンドに...
-
Cで作成したDLL関数をVBから呼...
-
CImage GetBitsメソッドについて
-
パスからファイル名を抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Cで作成したDLL関数をVBから呼...
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
構造体とfscanf
-
c言語で任意のファイルから読み...
-
デバイスハンドルとは?
-
main(int argc,char **argv[])...
-
基本アルゴリズムの『返す』の...
-
コンストラクタでnewを失敗した...
-
C言語の関数と配列に関する質問
-
参照型で受け取った引数をポイ...
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
おすすめ情報