• ベストアンサー

イベントの発生から対応する処理実行までの作り方

以前に、ボタンクリックなどのイベントが起きたら すぐにそのボタンクリックに対応した処理をその場(イベント ハンドラ)で実行するのではなく、 "イベントが発生しました関数"のようなものに最初に イベント情報を渡してしまい、あとはその関数からイベントが 振り分けられていき、最終的にそのイベントに対応した処理が 実行される。といったプログラムを見たことがあるのですが、 このような技法は一般的に行われるものなのでしょうか? 巨大なプログラムになるとこのような技法が使われる気が しますが・・・ また、この技法には何か名前がついているのでしょうか? また、これに関して記載しているサイト・書籍などありましたら 教えてください。

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

  • ベストアンサー
  • Gizensha
  • ベストアンサー率34% (207/608)
回答No.1

名前についてはわかりませんが、  メニューから  ツールバーから  ショートカットキーから  外部プログラムの操作から  起動時引数から  マクロから 同じ機能を呼び出す場合などに使うことがあるかもしれません。 私の場合はすべての操作を一つの関数にまとめるよりは、機能ごとに関数(クラスのメソッド)を作るやり方の方が好みです。

upanepa
質問者

お礼

なるほど、まとめる単位は機能ごととするやり方も あるのですね ご回答ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

一般にウインドウズの処理は「メッセージ」(特別な意味あり)のやり取りでプログラムが進行するといわれています。そのメッセージはマウスなどウインドウズ画面で起こったことをすべてOSに知らせ、OSが解析して、ユーザーにVBやVBAのレベルでは、それらを整理して、イベントというカタチで渡してくれるようです。 http://www.kanazawa-net.ne.jp/~pmansato/WinApps.htm など 「ウインドウズ メッセージ処理」でWEB照会し記事を拾い読みしてはどうでしょう。 その辺をより直接扱うのは各種API関数、DLL関数の世界と思います。 >一般的に行われるものなのでしょうか 仕事(処理内容)によると思います。APIレベルで処理しないと出来ない業務(その一部が)もあるでしょう。 >巨大なプログラムになるとこのような技法が使われる 巨大というのはどういうことを言うかあいまいですが、コード数が多い、従事人数が多い業務処理ほど、余りAPIレベルでやらず、それを含んだ関数(サブルーチン、サブモジュール)を表面上コーディングで使うのではないでしょうか。標準化・省力化・バグの減少狙いということもあります。 「クラス」や「ラップ」「フック」という言葉も照会してみたら。 http://msdn.microsoft.com/ja-jp/library/cc344696.aspx ほかに http://oshiete1.goo.ne.jp/qa2724554.htmlなど。

upanepa
質問者

お礼

ご回答ありがとうございます。