J'expérimente un peu avec monodevelop/C#/gdk et j'ai été capable de créer une fenêtre avec un DrawingArea
qui gère correctement l'événement d'exposition.Pourquoi ne pas avoir `ButtonPressEvent`
Les événements de souris ne sont cependant pas distribués et je ne comprends pas pourquoi. Les délégués ont été mis en place dans le code généré automatiquement par le concepteur graphique:
this.da.ExposeEvent += new global::Gtk.ExposeEventHandler (this.OnDAExposeEvent);
this.da.ButtonPressEvent += new global::Gtk.ButtonPressEventHandler (this.OnDAButtonPressEvent);
this.da.MotionNotifyEvent += new global::Gtk.MotionNotifyEventHandler (this.OnDAMotionNotifyEvent);
et voici mon code d'initialisation:
public MainWindow() : base (Gtk.WindowType.Toplevel)
{
Build();
Gdk.Color col = new Gdk.Color();
col.Red = col.Green = col.Blue = 0x8888;
da.ModifyBg(StateType.Normal, col);
var p = "wr/wn/wb/wq/wk/wp/br/bn/bb/bq/bk/bp".Split ('/');
for (int i = 0; i < p.Length; i++) {
pieces[p[i]] = new ImageSurface("/home/agriffini/x/chessboard/i" + p [i] + ".png");
}
da.Events |= (Gdk.EventMask.ButtonPressMask
| Gdk.EventMask.ButtonReleaseMask
| Gdk.EventMask.KeyPressMask
| Gdk.EventMask.PointerMotionMask);
}
mais la fonction de gestionnaire OnDAButtonPressEvent
ne sera jamais appelé (vérifié en plaçant un point d'arrêt Là).
Quelle est la pièce qui manque?