5

WndProcフォーム アプリケーションでの使用について基本的な質問があります。WndProcフォームイベントが利用可能な場合、メソッドの使用法を知りたいです。カスタム メッセージを作成する必要があるのはどのような場合ですか? MSDNは、Windows メッセージを処理するためだけに使用されることを示しています。

4

2 に答える 2

4

WndProc は、WinForms が Win32 ウィンドウ メッセージのラッパーを提供し、使いやすく理解しやすい .NET レイヤーを提供する方法です。

通常、次のように動作します。WM_LBUTTONDOWN Windows メッセージの例を見てみましょう。Windows.Forms.Control.WndProc は、このメッセージをインターセプトし、メッセージの WPARAM と LPARAM から関連情報を抽出します。次に、MouseEventArgs に適切にパッケージ化された関連情報を使用して、保護された仮想メソッド OnMouseDown を呼び出します。実装は、独自の処理の最後に MouseDown イベントを発生させます。

そのため、一連の OnXXXX メソッド/XXXX イベントを処理する方が、Windows メッセージを直接インターセプトするよりもはるかに簡単です。

しかし、関心のある Windows メッセージが WinForms によって処理されない場合はどうなるでしょうか? その場合、WndProc をオーバーライドして、自分で直接処理できます。もう 1 つの用途は、メッセージをインターセプトし、コントロール自体が処理する前に破棄することです。または、アプリケーション内のコントロール間で送信するカスタム メッセージを作成できます。コントロールが受け取るすべてのメッセージを確認したい場合のデバッグにも役立ちます。1 か所にログを追加するだけで済みます。

于 2012-04-16T05:20:43.030 に答える
2

.NET は Win32 のラッパーです。Windows のすべてのメソッド、イベント、およびプロパティを 100% 公開しているわけではありません。

そのため、時にはカバーの下に入る必要があります。

しかし、それはあなたが探しに行くものではありません - あなたの問題がそれを必要とするとき、古き良き Stack Exchange 検索は通常あなたに知らせます.

于 2012-04-16T05:08:08.107 に答える