>>903 Windows メッセージパッシングの基本原理を知っているかどうかで、
説明がかなり変わるんだが...
SetWindowsHook(Ex) は Windows API で用意されていて、直接ウィンドウプロシージャを
書き換える。VCL/TWindow コントロールでなくても利用可能。
WindowProc は、VCL 側で定義されている、コントロールごとに存在する
ウィンドウプロシージャ。コントロールのソースコードがある場合には
これを書き換えるほうがメンテナンスしやすい。
さらに、メッセージを処理するたびに呼び出される OnMessage が
用意されていて、この構文を使えばイベントと同様にコードが書ける。
「イベントと同様」とは、あるインスタンスでデフォルトとは異なる振る舞いを
させたいときに、継承クラスを作成してバリエーションを作るのではなく、
最初から用意されているイベントに対してコードを追加することで対応する
ことを意味します。
ところがすべての Windows メッセージに対して、Dynamic メソッドを
定義できるため、コントロールのソースがある場合、わざわざ WindowProc を
変更する必要はほとんどない。
ソースがない/書き換えると大事になりそうな基本クラスなどの定義
済み動作を置き換えたいときくらいかな?
一部の重要なウィンドウズメッセージは扱いやすい形に書き換えられ
ちょっと知りつぼみな説明になった。
わからんところがあれば質問!