Every widget primitive and compound widget can carry a user-
specified value of any IDL data type and organization; that is,
every widget contains a variable that can store arbitrary
information. This value is ignored by the widget and is for the
programmer's convenience only. The initial user value is
specified using the UVALUE keyword to the widget creation
function. If no initial value is specified, the user value is
undefined. Once the widget exists, its user value can be
examined and/or changed using the GET_UVALUE and SET_UVALUE
keywords to the WIDGET_CONTROL procedure. User values can be
used to simplify event-handling. If each widget has a distinct
user value, you need only check the user value of any event to
determine which widget generated it. In practice, this means you
do not need to keep track of the widget IDs of all the widgets
in your widget hierarchy in order to determine what to do with a
given event. Another use for user variables is to simulate a
variable that is available in more than one