Widget_Control [message #2359] |
Tue, 28 June 1994 15:27  |
dean
Messages: 55 Registered: March 1993
|
Member |
|
|
I am attempting to use WIDGET_CONTROL to pass a structure to a widget
_EVENT PRO. However, I am getting an invalid event id. I am working with
IDL for Windows 3.5.1.
My goal here is to have two separate window displays with the cursor
dumping from either window 1 or window 2.
Kelly Dean
CSU/CIRA
================================= Error ===================================
IDL> mine
% WIDGET_EVENT: Invalid widget identifier: 33.
% Execution halted at KD_DISPLAY_EVEN <F:\IDL\TRAINING\MINE.PRO(25)>
(WIDGET_EVENT).
% Called from XMANAGER <E:\IDL35\LIB\WIDGETS\XMANAGER.PRO(458)>.
% Called from MINE <F:\IDL\TRAINING\MINE.PRO( 110)>.
% Called from $MAIN$ .
===================================== Mine.pro ===============================
FUNCTION Read_Image_Data, file, xsize, ysize
IF N_Params() NE 3 THEN $
Message, 'Must call Read_Image_Data with three parameters.'
Openr, unit, file, /Get_LUN
image = BytArr(xsize,ysize)
ReadU, unit, image
Free_LUN, unit
Return, image
END
PRO KD_DISPLAY_EVENT, event
Widget_Control, event.id, GET_UVALUE = eventval
WIDGET_CONTROL, event.top, GET_UVALUE = WDRAWstr
;HELP, /STRUCTURE, WDRAWstr
CASE eventval OF
"DRAW_WIN_EVENT" : BEGIN
WSET, WDRAWSTR.Win_id
WSHOW, WDRAWSTR.Win_id
pxvnt = WIDGET_EVENT(WDRAWSTR.Win_id)
HELP, /STRUCTURE, pxvnt
WHILE (pxvnt.press NE 4 ) DO BEGIN
pxvnt = WIDGET_EVENT(WDRAWSTR.Win_id)
x = pxvnt.x
y = pxvnt.y
PRINT, ' Win >',wid,' X >', x,' Y >',y
ENDWHILE
END
ENDCASE
END
PRO KD_DISPLAY, Parent, name, image, xsize, ysize
wBase = WIDGET_BASE(title = name, GROUP_LEADER = Parent)
wDraw = WIDGET_DRAW(wBase, $
UVALUE = 'DRAW_WIN_EVENT', $
XSIZE=xsize, YSIZE=ysize, $
/MOTION_EVENTS, $
/BUTTON_EVENTS, $
RETAIN = 2)
WIDGET_CONTROL, wBase, /REALIZE
WIDGET_CONTROL, wDraw, GET_VALUE = Win
WSET, Win
WSHOW, Win
TV, image
WDRAWstr = { WDRAWSTR, Par_id:Parent, Win_id:Win }
XManager, 'KD_DISPLAY' , wBase
WIDGET_CONTROL, wBase, SET_UVALUE = WDRAWstr
END
PRO mine_event, event
WIDGET_CONTROL, Event.Id, GET_UVALUE = Ev
CASE Ev OF
"IMAGE1": BEGIN
name = 'ctscan.dat'
xsize = 256
ysize = 256
image = Read_Image_Data(Filepath(Subdir='images', name), xsize,
ysize)
KD_DISPLAY, Event.top, name, image, xsize, ysize
END
"IMAGE2": BEGIN
name = 'galaxy.dat'
xsize = 256
ysize = 256
image = Read_Image_Data(Filepath(Subdir='images', name), xsize,
ysize)
KD_DISPLAY, Event.top, name, image, xsize, ysize
END
"QUIT": WIDGET_CONTROL, Event.Top, /DESTROY
ENDCASE
END
PRO MINE
wBase = WIDGET_BASE(/COLUMN)
wBase2 = WIDGET_BASE(wBase, /ROW)
wButton = WIDGET_BUTTON(wBase2, VALUE="Image1", UVALUE="IMAGE1")
wButton = WIDGET_BUTTON(wBase2, VALUE="Image2", UVALUE="IMAGE2")
wBase2 = WIDGET_BASE(wBase, /ROW)
wLabel = WIDGET_LABEL(wBase2, VALUE="Cursor position:", /FRAME)
wEdit = WIDGET_TEXT(wBase2, VALUE='0,0', EDITABLE=0)
wButton = WIDGET_BUTTON(wBase, VALUE="Quit", UVALUE="QUIT")
WIDGET_CONTROL, wBase, /REALIZE
XMANAGER, "MINE", wBase
END
|
|
|