в C #, Как отправить сообщение пользователя в Windows и обработать его? - PullRequest
0 голосов
/ 02 мая 2011

В C ++ в Windows мы используем пользовательское сообщение в пользовательском интерфейсе формы для обновления данных через PostMessage API. Мы можем использовать PostMessage в C #, но не знаем, как обрабатывать пользовательские сообщения в формах! Некоторые скажут мне использовать делегированный и вызвать, но у нас есть проблемы, когда формы закрыты или еще не созданы, когда потоки вызывают делегирование. Мы по-прежнему предпочитаем PostMessage для информирования пользовательского интерфейса об обновлении данных. Пожалуйста, помогите.

1 Ответ

1 голос
/ 02 мая 2011

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