Мне нужно перехватить несколько событий, прежде чем они будут доставлены стандартным обработчикам виджета, поэтому я уже сделал это:
//Inside the definition of my custom widget
protected override void OnRealized()
{
base.OnRealized();
this.GdkWindow.AddFilter(PreFilterMessage);
...
}
Итак, позже я определю метод PreFilterMessage:
public Gdk.FilterReturn PreFilterMessage(IntPtr xEvent, Gdk.Event evnt)
{
Console.WriteLine(evnt.Type);
...
}
Но дело в том, что когда я проверяю его, какое бы сообщение ни попадало в окно (KeyEvent, ButtonEvent и т. Д.), Оно всегда печатает «Nothing», поэтому я каждый раз получаю только пустые события. Где-то я читал, что реальная информация поступает через параметр xEvent, но это просто IntPtr, поэтому я не знаю, как получить из него необходимую информацию (тип события, координаты указателя и т. Д.).
Может кто-нибудь сказать мне, как это сделать? Заранее спасибо.