Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!snorkelwacker!bloom-beacon!govt.shearson.COM!fgreco From: fgreco@govt.shearson.COM (Frank Greco) Newsgroups: comp.windows.x Subject: correcting my error... Message-ID: <9008172018.AA21661@islanders.> Date: 17 Aug 90 20:18:45 GMT Sender: daemon@athena.mit.edu (Mr Background) Organization: The Internet Lines: 94 Sorry folks, I erred in my mistatement regarding getting the canvas in an event_proc. I was a bit hasty. After looking at my own code (of course *after* I made my misposting...), the way to get the canvas in an event_proc is to use the CANVAS_PAINT_CANVAS_WINDOW attribute ...i.e., mycanvas = xv_get(pw, CANVAS_PAINT_CANVAS_WINDOW); I've enclosed an example to illustrate: Sorry for the confusion all..... Frank G. ------------------------ Start Cutting --------------------------------- #include #include #include #include #include void event_proc(); void repaint_proc(); main(argc,argv) { Frame frame; Canvas canvas; xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, 0); frame = (Frame)xv_create(NULL, FRAME, FRAME_LABEL, "Event Tester", 0); canvas = (Canvas)xv_create(frame, CANVAS, XV_WIDTH, 200, XV_HEIGHT, 200, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, repaint_proc, 0); window_fit(frame); xv_set(canvas_paint_window(canvas), WIN_EVENT_PROC, event_proc, WIN_CONSUME_EVENTS, KBD_DONE, KBD_USE, LOC_DRAG, LOC_MOVE, LOC_WINENTER, LOC_WINEXIT, WIN_ASCII_EVENTS, WIN_MOUSE_BUTTONS, NULL, NULL); xv_main_loop(frame); } /**************************************/ void event_proc(xw, event) Xv_window xw; Event *event; { Canvas can; can = (Canvas) xv_get(xw, CANVAS_PAINT_CANVAS_WINDOW); fprintf(stderr, "****************************************\n"); fprintf(stderr, " Canvas: %u (%x)\n", can, can ); fprintf(stderr, " Event ID: %d - %c\n", event_id(event), event_is_ascii(event)? event_id(event) : ' '); fprintf(stderr, " Mouse at: [%4d, %4d]\n", event_x(event), event_y(event)); fprintf(stderr, " Event Flags: %d\n", event_flags(event)); fprintf(stderr, " Window ID: %u\n", event_window(event)); if ( event_string(event) ) fprintf(stderr, " XLookupString: [%s]\n", event_string(event)); fprintf(stderr, " Xevent-Keycode: %u\n", event_xevent(event)->xkey.keycode); fprintf(stderr, "Xevent-Key/Mouse State: %u\n\n", event_xevent(event)->xkey.state); } /**************************************/ void repaint_proc(canvas, pw, dpy, xwin, xrects) Canvas canvas; Xv_Window pw; Display dpy; Window xwin; Xv_xrectlist *xrects; { fprintf(stderr, "FG...Repaint proc called....\n"); } ------------------------ End Cutting ---------------------------------