• ベストアンサー

C++ Builder6のイベントハンドラーの参考書

C++Builder6の初心者です。 イベントハンドラーの使い方が分かりません。 確かに、例題を挙げたものが出版されておりますが 記述を読んでも何故そうなるのか理解できません。 初心者にでも参考になる本等がありましたら教えて 頂きたくお願いします。

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

  • ベストアンサー
noname#126727
noname#126727
回答No.2

私もC++Builderのプログラミングで,イベントハンドラがそのコンポーネントを含むクラスの中で記述されているのに,どうしてコンポーネントにイベントが伝わるのだろう?と以前から疑問に感じていました。 周りに詳しい方がいないし,C++Builderの書籍の書籍って数が少なく困っていました。 いろいろ探しているうちに「C++BuilderはDelphiのC++版だ」,「VCLはDelphiで作られている」ということをネットや雑誌で見かけました。 それでDelphiの書籍を当たってみました。 書名:Delphi コンポーネント設計&開発 著者:中村拓男 発行:インプレス ISBN:4-8443-1746-6 価格:5700円 イベントハンドラの使い方も載っていますが,それよりメカニズムについて詳しく解説してあり参考になりました。 kaminarikunさんの求められているものとは違うかもしれませんが,参考までに書いてみました。(ただ,初心者むけとは言えないし,C++でなくDelphi言語だし,価格も高いし....(^_^;)

kaminarikun
質問者

お礼

有難うございます。 私も参考書を大分探しましたが、ピタッとくるものがありませんでした。 事例を見て慣れろということですね。

その他の回答 (1)

回答No.1

何がわかりませんか?  イベントハンドラは、そのイベントが発生したときに振る舞いを「扱う」(ハンドル)ものです。  例えば、ボタンコントロールにはOnCkickというイベントがありますが、これは「ボタンをクリックした」時に発生します。この発生した「イベント」を検知し、「イベント」を「扱う」のがイベントハンドラです。  なぜそうなるか?「そう」とは何を指します?イベントの発生を扱うのはOSカーネルです。「イベントの発生」といっていますが、Windowsでは「メッセージの到着」がイベントで、メッセージを発信するのはWindowsです。全てのアプリケーションは全てのメッセージを受け取っており、そこから自分に関係のあるものかどうか、取捨選択します。この辺は、BCBの場合、かってやってくれます。メッセージが自分に関係のあるものであった場合、イベントハンドラ、つまり関数ですね、これが登録されているかどうか調べ、登録されていればその関数を呼び出します。この辺はすでにコーディングされています。  使い方は、処理したいイベントを探し、処理したいイベントがあれば記述し、なければ放っておきます。イベントハンドラのないイベントは捨てられます。

kaminarikun
質問者

お礼

有難うございます。 仕組みが何となく分かったような気になりました。 知りたいことは処理すべきイベントの記述方法です。 書いてある例は沢山あるのですが、記述すべきルールはどうなっているのか、ということでした。

関連するQ&A