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函数返回成功值?零 = 真,非零 = 假,或者是什么?

有人可以真正向我解释该属性的值是什么意思,在哪些情况下我应该使用该值,并向我展示如何使用它来处理来自wndprocsub 的消息的代码示例?

更新:

我如何尝试处理 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

我取决于消息。根据 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 回答
4

每个窗口消息(WM_CREATE、WM_DESTROY、WM_PAINT、WM_USER 等)都是由something发送的。大多数消息由 Windows 发送以响应某些用户交互或某些 API 调用。其他是通过 3rd-party code 发送的(例如,当您调用 Win32 APISendMessage时,它的调用者SendMessage直接发送消息)。在任何情况下,消息的发送者都可能期望得到响应。预期响应取决于消息的发送者和消息类型。

在大多数情况下,您可能希望遵循 Microsoft 为窗口消息定义的规则。例如,在WM_CREATE的文档中,它说:

如果应用程序处理此消息,它应该返回零以继续创建窗口。如果应用程序返回 –1,则窗口被销毁并且 CreateWindowEx 或 CreateWindow 函数返回一个 NULL 句柄。

处理 WM_CREATE 消息时,您应该返回上面定义的适当值。在处理其他消息时,您应该返回文档中关于该消息的任何内容。在处理诸如 WM_USER 之类的第 3 方消息时,第 3 方应清楚地表明它期望什么。

于 2013-11-13T18:50:18.283 回答
2

一个典型的例子是WM_NCHITTEST消息,当系统想知道鼠标在表单上的哪个位置时,它会传递给您的应用程序,以便它可以适当地更改光标并知道如何对用户的点击和拖动做出反应。例如,通过更改m.Result,您可以防止窗体在特定方向上调整大小,方法是告诉系统鼠标并未真正位于该特定边缘上,因此它可以防止拖动并且不会将光标更改为调整大小的那个。

于 2013-11-13T18:53:05.533 回答