home *** CD-ROM | disk | FTP | other *** search
- gadutil.library/GU_GetGadgetPtr gadutil.library/GU_GetGadgetPtr
-
- NAME
- GU_GetGadgetPtr -- Get a pointer to a gadget's gadget structure.
-
- SYNOPSIS
- gad = GU_GetGadgetPtr(id, gadgets)
- D0,SR(Z) D0 A0
-
- struct Gadget *GU_GetGadgetPtr(UWORD, struct LayoutGadget *);
-
- FUNCTION
- Find a gadget's gadget structure by giving its ID. The gadget
- pointer is always found last in the LayoutGadget structure. You
- can use this function to get that pointer.
- It is also possible to get the gadget structure by taking it
- directly from the LayoutGadget structure array, but then you
- must know exactly in which structure it is located. Assembly
- language programmers can use a PC relative pointer to get the
- gadget pointer.
-
- INPUTS
- id - the ID of the gadget to search for
-
- gadgets - a pointer to the array of LayoutGadget structures.
-
- RESULT
- gad - pointer to the requested gadget. For bevelboxes, this
- function will return a BBoxData structure.
-
- EXAMPLE
-
- Some of the LayoutGadget structures from BetterTest.c:
-
- struct LayoutGadget gadgets[] = {
- { MSG_NEXTDRIVE, NextDriveGad, StdGTTags, NULL },
- { MSG_PREVDRIVE, PrevDriveGad, StdGTTags, NULL },
- { MSG_DRIVE, DriveGad, DriveGTTags, NULL },
- { MSG_REQUESTER, ReqGad, StdGTTags, NULL },
- { MSG_CHECKME, CheckBoxGad, StdGTTags, NULL },
- { MSG_FILENAME, FileNameGad, StdGTTags, NULL },
- { -1, NULL, NULL, NULL }
- };
-
- The examples should get the gadget structure of the Requester
- gadget (not assuming that ID's begin with 0).
- There is two methods you can use to get a gadgets structure:
-
- 1. Use the pointer in the array directly:
-
- thegadget = gadgets[3].lg_Gadget
-
- This will only work if you know in which LayoutGadget structure
- the gadget is in.
-
- 2. Use this library function:
-
- thegadget = GU_GetGadgetPtr(MSG_REQUESTER, gadgets);
-
- This will always work if all gadgets have a unique ID.
-
-
- Some of the LayoutGadget structures from BetterTest.s:
-
- gadgets:
- GADGET MSG_NEXTDRIVE, NextDriveGad, StdGTTags
- GADGET MSG_PREVDRIVE, PrevDriveGad, StdGTTags
- GADGET MSG_DRIVE, DriveGad, DriveGTTags
- GADGET MSG_REQUESTER, ReqGad, StdGTTags
- GADGET MSG_CHECKME, CheckBoxGad, StdGTTags
- GADGET MSG_FILENAME, FileNameGad, StdGTTags
- GADGET -1,NULL,NULL
-
- Assembly language programmers can use three methods to get the
- pointer:
-
- 1. Use the pointer in the array directly:
-
- lea.l gadgets(pc),a0 ; Get array
- moveq.l #lg_SIZEOF,d0 ; Get the size of the LayoutGadget
- mulu #3,d0 ; struct and calculate offset to
- ; the right structure in the array
- move.l lg_Gadget(a0,d0.l),d0 ; Get the gadget pointer
-
- This will only work if you know in which LayoutGadget structure
- the gadget is in.
-
- 2. Use this library function:
-
- lea.l gadgets(pc),a0 ; Get array
- moveq.l #MSG_REQUESTER,d0 ; Gadget to search for
- jsr _LVOGU_GetGadgetPtr ; Get gadget, result in D0
-
- This will always work if all gadgets have a unique ID.
-
- 3. Use an extra label for each gadget that should be easy to
- access:
-
- gadgets:
- GADGET MSG_NEXTDRIVE, NextDriveGad, StdGTTags
- GADGET MSG_PREVDRIVE, PrevDriveGad, StdGTTags
- GADGET MSG_DRIVE, DriveGad, DriveGTTags
- GADGET MSG_REQUESTER, ReqGad, StdGTTags
- reqgad: equ *-4
- GADGET MSG_CHECKME, CheckBoxGad, StdGTTags
- GADGET MSG_FILENAME, FileNameGad, StdGTTags
- filenamegad: equ *-4
- GADGET -1,NULL,NULL
-
- move.l reqgad(pc),d0 ; Get the gadget
-
- This will always work.
-