.NET CF на Windows CE - проблема с фильтрацией системных сообщений - PullRequest
1 голос
/ 10 января 2011

Я пытаюсь получить каждое сообщение Windows, сообщающее, что пользователь коснулся экрана. Работает везде, кроме кнопки, когда она отключена. Кажется, что приложение не получает никаких сообщений при нажатии на отключенный элемент управления.

Я использую класс OpenNetCF Application2 для фильтрации сообщений:

Application2.AddMessageFilter(Device.PowerManager);<br> Application2.Run(new MainForm());

Класс PowerManager содержит следующий метод (как того требует интерфейс IMessageFilter):

    public bool PreFilterMessage(ref Microsoft.WindowsCE.Forms.Message m)
    {
        log.DebugFormat("windows message {0} - 0x{0:X}", m.Msg);
        if (m.Msg == 0x0201 || m.Msg == 0x8001 || m.Msg == 0x0005)
        {                
            return this.ResetPowerManager();       
        }

        return false;
    }

в файле журнала нет указания сообщения Windows при нажатии на отключенную кнопку. Мне интересно, как это возможно и как я могу получить это сообщение.

1 Ответ

1 голос
/ 19 августа 2011

Для этого сценария можно использовать функцию Win32 API SetCapture . Вы можете передать ей дескриптор своей главной формы, и он будет захватывать все события мыши, пока вы не вызовете ReleaseCapture .

...