在 C# 中,如何将用户消息发布到 Windows 并处理它?

发布于 2024-11-04 13:58:35 字数 192 浏览 0 评论 0原文

在 Windows 上的 C++ 中,我们使用用户定义的消息在表单 UI 中通过 PostMessage API 更新数据。我们可以在C#中使用PostMessage,但不知道如何在Forms中处理用户定义的消息! 有些人会告诉我使用委托和调用,但是当线程调用委托时表单关闭或尚未创建时,我们会遇到问题。我们还是更喜欢PostMessage来通知UI更新数据。 请帮忙。

In C++ on Windows, we use user defined message to in form UI to update data thru PostMessage API. We can use PostMessage in C# but do not know how to process user defined message in Forms!
Some ones will tell me to use delegated and invoke but we have problems when forms closed or not already created when threads call delegated. We still prefer PostMessage to inform UI to update data.
Please Help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟沫凡尘 2024-11-11 13:58:35

Form 有一个可以重写的方法,WndProc,它将接收您的自定义消息。它以Message结构作为参数,该结构封装了消息的hwnd、msg、wParam和lParam参数,并包含一个消息结果字段。假设您有一条注册消息:

class MyForm : Form
{
    const int MyMessage = WM_USER + 0x05; // for example

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == MyMessage)
        {
            // do whatever with your message
        }
    }
}

Form has a method you can override, WndProc, that will receive your custom message. It takes a Message structure as its parameter, which encapsulates the hwnd, msg, wParam, and lParam parameters of the message, and includes a field for the message result. So assuming you have a registered message:

class MyForm : Form
{
    const int MyMessage = WM_USER + 0x05; // for example

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == MyMessage)
        {
            // do whatever with your message
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文