2

WPFコントロールは、マウスイベントが発生したことをどのように認識して、マウスイベントを発生させることができますか。

たとえば、ボタン コントロールは、MouseDown および MouseUp イベントをキャプチャして、それをクリック イベントに変換することをどのように認識しますか。

4

1 に答える 1

5

Windows はメッセージング モデルを使用して、何が起きているかを GUI 要素に通知します。Windows はこれらのメッセージをメッセージ キューに入れ、各ウィンドウは常にこのキューをチェックして、存在するメッセージを確認します。これは、メッセージ ループと呼ばれることがよくあります。次に、ウィンドウは、それ自体に宛てられたメッセージを取得し、必要なアクション (ユーザー コードが応答するイベントを発生させるなど) を実行します。メッセージループとメッセージについてもっと学ぶために、これこれを読むことをお勧めします。

WinForms では、各コントロールは独自のウィンドウであったため、各コントロールには独自のメッセージ キューがありました。これは WPF には当てはまりません。WPF はウィンドウ全体を単一の項目として扱い、実行時に必要な要素を構成するため、WPF はこれを別の方法で処理します。WPF がこの状況をどのように処理するかについて詳しく知るために、これを読むことをお勧めします。

Windows メッセージ、Windows メッセージ ループを検索し、WPF をミックスに投入するだけで、ここにリストしたリソース以外にも、他にも多くのリソースがあります。

于 2013-03-18T16:01:32.880 に答える