在c#中,如何向Windows发送用户消息并对其进行处理

本文关键字:用户消息 处理 Windows | 更新日期: 2023-09-27 17:54:06

在Windows上的c++中,我们使用用户自定义消息到表单UI,通过PostMessage API更新数据。我们可以在c#中使用PostMessage,但不知道如何在表单中处理用户自定义消息!有些人会告诉我使用委托和调用,但我们有问题时,窗体关闭或尚未创建时,线程调用委托。我们仍然倾向于使用PostMessage来通知UI更新数据。请帮助。

在c#中,如何向Windows发送用户消息并对其进行处理

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
        }
    }
}