0

C で独自のメッセージ ディスパッチャーを作成したい... たとえば、MyButton または MyWindow 構造体にメッセージを送信したい。そして、これらの構造には独自のハンドラーがあります。

教祖に提案はありますか?

PS: 組み込みアプリケーション用 (マイクロコントローラを使用)

PPS:ショーンに感謝- これは私が必要としているものです。ショーンのアドバイスの私の簡単な解釈:

typedef void (*MyHandler)(size_t param);
MyHandler Handlers[32];
void RegisterHandlers(size_t id, MyHandler handler) {
  Handlers[id] = handler;   
}
void SendMessage(size_t id, size_t param) {
  Handlers[id](param);  
}
4

1 に答える 1

0

これを実装するには、次のようにします。

発生するイベントのスレッド セーフなコンテナーであるキューを設計します。

次に、イベント ID、文字列、または整数を、ハッシュ テーブルまたはそのようなメカニズムを介して関数に結び付けるシステムを設計します。

これら 2 つのチャンクが作成された後は、イベント ID を関数ポインターに登録する方法と、関数にパラメーターを送信する一般的な方法が必要です。メッセージ ディスパッチャーで行う必要があるのは、これだけです。メッセージをキューにプッシュしてから、キューから取り出して、メッセージに含まれるものに反応します。

于 2012-10-15T05:49:21.373 に答える