1

Resultプロパティの意味:

メッセージの処理に応答してウィンドウに返される値を指定します

しかし、MSDNもう言わない: http://msdn.microsoft.com/en-us/library/system.windows.forms.message.result%28v=vs.110%29.aspx

私はこの質問でユーザー@ Idle_Mindからのこの引用語に言及しますより良いWndProc処理を書くようにしています:

Result() プロパティを設定して、メッセージの処理方法を変更できます。

winapi関数が成功値を返すようなものですか?ゼロ = 真、ゼロ以外 = 偽、または何ですか?

誰かが、そのプロパティの値が何を意味するのか、どのような状況でこの値を使用する必要があるのか​​ を本当に説明し、wndprocサブからのメッセージを処理する方法のコード例を見せてくれますか?

アップデート:

WM_CREATE メッセージを処理しようとしている方法の例...

Protected Overrides Sub WndProc(ByRef m As Message)

    Select Case m.Msg

        Case &H1 ' WM_CREATE
             m.Result = -1

    End Select

    MyBase.WndProc(m)

End Sub
4

3 に答える 3

4

すべてのウィンドウ メッセージ (WM_CREATE、WM_DESTROY、WM_PAINT、WM_USER など) は、何かによって送信されます。ほとんどのメッセージは、何らかのユーザー操作または API 呼び出しに応答して Windows によって送信されます。その他は、サード パーティのコードによって送信されます (たとえば、Win32 API を呼び出す場合、メッセージを直接送信しているSendMessageのはの呼び出し元です)。SendMessageいずれにせよ、メッセージの送信者はおそらく何らかの応答を期待しています。予想される応答は、メッセージの送信者とメッセージの種類によって異なります。

ほとんどの場合、ウィンドウ メッセージについて Microsoft によって定義された規則に従うことをお勧めします。たとえば、WM_CREATEのドキュメントでは、次のように述べています。

アプリケーションがこのメッセージを処理する場合、ウィンドウの作成を続行するにはゼロを返す必要があります。アプリケーションが -1 を返す場合、ウィンドウは破棄され、CreateWindowEx または CreateWindow 関数は NULL ハンドルを返します。

WM_CREATE メッセージを処理するときは、上記で定義した適切な値を返す必要があります。他のメッセージを処理するときは、そのメッセージについてドキュメントに記載されているものは何でも返す必要があります。WM_USER などのサードパーティ メッセージを処理する場合、サードパーティは期待する内容を明確に示す必要があります。

于 2013-11-13T18:50:18.283 に答える
4

私はメッセージに依存します。API リファレンスによると、特定のメッセージにバインドされています。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx

例えば:

戻り値

このメッセージを処理する場合、アプリケーションはゼロを返します。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd145213%28v=vs.85%29.aspx

これはフラグとして使用でき、メッセージがこれ以上出席する必要がないことを示します。

アプリケーションがメッセージを処理する、つまりメッセージを処理する場合、結果は 0 で十分です。

于 2013-11-13T18:49:26.657 に答える
2

古典的な例はWM_NCHITTESTメッセージです。これは、システムがマウスがフォーム上のどこにあるかを知りたいときにアプリに渡されます。これにより、カーソルを適切に変更し、ユーザーのクリックとドラッグにどのように反応するかを知ることができます。たとえば、 を変更m.Resultすることで、マウスが実際にはその特定の端の上にないことをシステムに伝えることで、フォームが特定の方向にサイズ変更されるのを防ぐことができます。これにより、ドラッグが防止され、カーソルがサイズ変更に変更されなくなります。

于 2013-11-13T18:53:05.533 に答える