/* examples/canvas/event.c */ #include He_node *princ, *canvas; void canvas_repaint_proc (He_node *hn, Window win) { printf ("canvas_repaint_proc\n"); } void canvas_event_proc (He_node *hn, He_event *hev) { printf ("canvas_event_proc "); switch (hev->type) { case EnterNotify : printf ("EnterNotify %d,%d %d\n", hev->sx, hev->sy, hev->sb); break; case LeaveNotify : printf ("LeaveNotify %d,%d %d\n", hev->sx, hev->sy, hev->sb); break; case ButtonPress : printf ("ButtonPress %d,%d %d\n", hev->sx, hev->sy, hev->sb); break; case ButtonRelease : printf ("ButtonRelease %d,%d %d\n", hev->sx, hev->sy, hev->sb); break; case MotionNotify : printf ("MotionNotify %d,%d %d\n", hev->sx, hev->sy, hev->sb); break; case KeyPress : printf ("KeyPress: \"%s\" keysym = XK_%s len = %d\n", hev->str, XKeysymToString(hev->sym), hev->len); break; case KeyRelease : printf ("KeyRelease\n"); break; } } int main (int argc, char *argv[]) { HeInit (&argc, &argv); princ = HeCreateFrame(); HeSetFrameLabel (princ, "Évènements du canvas"); canvas = HeCreateCanvas (princ); HeSetCanvasRepaintProc (canvas, canvas_repaint_proc); HeSetCanvasEventProc (canvas, canvas_event_proc); HeSetWidth (canvas, 300); HeSetHeight (canvas, 300); HeFit (princ); return HeMainLoop (princ); }