home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 January / Chip_1997-01_cd.bin / ms95 / disk18 / dir01 / f011030.re_ / f011030.re
Text File  |  1996-04-02  |  86KB  |  2,577 lines

  1. /*----------------------------------------------------------------------+
  2. |                                    |
  3. |  Copyright (c) 1985-93;  Bentley Systems, Inc., All rights reserved.    |
  4. |                                    |
  5. | "MicroStation", "MDL", and "MicroCSL" are trademarks of Bentley    |
  6. |  Systems, Inc.                            |
  7. |                                    |
  8. |  This program is proprietary and unpublished property of Bentley        |
  9. |  Systems Inc. It may NOT be copied in part or in whole on any medium,    |
  10. |  either electronic or printed, without the express written consent    |
  11. |  of Bentley Systems, Inc.                        |
  12. |                                    |
  13. +----------------------------------------------------------------------*/
  14. /*----------------------------------------------------------------------+
  15. |                                    |
  16. |   Current Revision:                            |
  17. |   $Workfile:   dlogitem.h  $
  18. |   $Revision:   6.40  $  $Date:   13 Sep 1995 14:04:32  $
  19. |                                    |
  20. +----------------------------------------------------------------------*/
  21. /*----------------------------------------------------------------------+
  22. |                                    |
  23. |   dlogitem.h -- Dialog Box Manager Item definitions used ONLY by Item    |
  24. |          Handler and Item Hook Writers                |
  25. |                                    |
  26. +----------------------------------------------------------------------*/
  27. #if !defined (__dlogitemH__)
  28. #define __dlogitemH__
  29.  
  30. #if !defined (resource)
  31.  
  32. #if !defined (__basedefsH__)
  33. #include <basedefs.h>
  34. #endif
  35. #if !defined (__basetypeH__)
  36. #include <basetype.h>
  37. #endif
  38. #if !defined (__msdefsH__)
  39. #include <msdefs.h>
  40. #endif
  41. #if !defined (__rscdefsH__)
  42. #include <rscdefs.h>
  43. #endif
  44. #if !defined (__msinputqH__)
  45. #include <msinputq.h>
  46. #endif
  47. #if !defined (__vartypesH__)
  48. #include <vartypes.h>
  49. #endif
  50. #if !defined (__dlogboxH__)
  51. #include <dlogbox.h>
  52. #endif
  53. #if !defined (__mscolorH__)
  54. #include <mscolor.h>
  55. #endif
  56. #if !defined (__odarrayH__)
  57. #include <odarray.h>
  58. #endif
  59.  
  60. #endif    /* !defined (resource) */
  61.  
  62. /*----------------------------------------------------------------------+
  63. |                                    |
  64. |   Basic Item Constants                        |
  65. |                                    |
  66. +----------------------------------------------------------------------*/
  67. #define INVALID_ITEM        (-1)
  68.  
  69. #define BUTTONTIMEOUT_CLICK        0   /* down to up > dClickTime/2 */
  70. #define BUTTONTIMEOUT_DOUBLECLICK    1   /* down to down > dclickTime */
  71.  
  72. /*----------------------------------------------------------------------+
  73. |                                    |
  74. |   Opaque Pointer Typedefs                        |
  75. |                                    |
  76. +----------------------------------------------------------------------*/
  77. #if !defined (resource)
  78.     typedef char DialogBox;        /* used to create opaque DialogBox ptr's */
  79.     typedef char AccelKeyTable; /* used to create opaque AccelKeyTable ptr */
  80.  
  81. #if !defined (STRING_LIST_DEFINED)
  82. #define    STRING_LIST_DEFINED 1
  83.     typedef char StringList;    /* used for creation/use of string lists */
  84. #endif    /*  (STRING_LIST_DEFINED) */
  85.  
  86. /*----------------------------------------------------------------------+
  87. |                                    |
  88. |   Structure For Passing Values to and from Items            |
  89. |                                    |
  90. +----------------------------------------------------------------------*/
  91. typedef union valueunion    /* union of types processed by get/set messages */
  92.     {
  93.     unsigned char    uCharFormat;
  94.     char        *charPFormat;
  95.     unsigned Wordint uWordFormat;
  96.     Wordint         sWordFormat;
  97.     unsigned Longint uLongFormat;
  98.     Longint         sLongFormat;
  99.     double         doubleFormat;
  100.     void        *voidPFormat;
  101.     } ValueUnion;
  102.  
  103. #endif    /* !defined (resource) */
  104.  
  105. /*----------------------------------------------------------------------+
  106. |                                    |
  107. |   Dialog Messages                            |
  108. |                                    |
  109. |   Sent to dialogHooks.                        |
  110.  
  111.     CREATE        sent before item hooks are sent create messages.
  112.     INIT        sent after all item hooks are sent create messages.
  113.     DESTROY        sent after all item hooks are sent destroy messages.
  114.     UPDATE        sent after all update messages sent to items.
  115.     RESIZE        sent after window has been resized (or moved), but before
  116.             update. (don't draw here simply move & rescale).
  117.     CALCSIZE        window mgr needs to know new size since dialog
  118.                  may be moved to screen w/ different screen font.
  119.     FONTCHANGED        dialog has been moved to a screen w/ different screen
  120.              font.
  121.  
  122.     BUTTON        sent after button message sent to item.
  123.     FOCUSIN        sent when dialog receives focus before item focus in.
  124.     FOCUSOUT        sent when dialog loses focus after item focus out.
  125.     ITEMFOCUSIN        sent after item in dialog gets focusIn message.
  126.     ITEMFOCUSOUT    sent after item in dialog gets focusOut message.
  127. |                                    |
  128. +----------------------------------------------------------------------*/
  129. #define DIALOG_MESSAGE_CREATE        0   /* sent before item creates */
  130. #define DIALOG_MESSAGE_INIT        1    /* sent after item creates */
  131. #define    DIALOG_MESSAGE_DESTROY      2   /* about to close window */
  132. #define DIALOG_MESSAGE_UPDATE        3   /* window just got update message */
  133. #define DIALOG_MESSAGE_RESIZE        4
  134. #define DIALOG_MESSAGE_CALCSIZE        5    /* calc size with new fontIndex */
  135. #define DIALOG_MESSAGE_FONTCHANGED  6    /* dialog's font index changed */
  136. #define DIALOG_MESSAGE_SYNCH        7
  137.  
  138. #define DIALOG_MESSAGE_BUTTON        8    /* got button event */
  139.  
  140. #define DIALOG_MESSAGE_KEYSTROKE    9
  141. #define DIALOG_MESSAGE_FOCUSIN        10
  142. #define DIALOG_MESSAGE_FOCUSOUT        11
  143. #define DIALOG_MESSAGE_ITEMFOCUSIN  12
  144. #define DIALOG_MESSAGE_ITEMFOCUSOUT 13
  145.  
  146. #define DIALOG_MESSAGE_CHILDDESTROYED    14  /* after child removed frm scrn */
  147. #define DIALOG_MESSAGE_ACTIONBUTTON    15
  148. #define DIALOG_MESSAGE_USER        16
  149.  
  150. #define DIALOG_MESSAGE_ANOTHEROPENED    17  /* sent after INIT msgs */
  151. #define DIALOG_MESSAGE_ANOTHERCLOSED    18  /* sent before DESTROY msg */
  152.  
  153. #define DIALOG_MESSAGE_STATECHANGED    19  /* sent after msg sent to item */
  154. #define DIALOG_MESSAGE_HIDE        20  /* sent before dialog is hidden */
  155. #define DIALOG_MESSAGE_MINIMIZE        21  /* not under X windows */
  156. #define DIALOG_MESSAGE_MAXIMIZE        22  /* not under X windows */
  157. #define DIALOG_MESSAGE_ACTIVATE        23  /* 5.0 */
  158. #define DIALOG_MESSAGE_BEFOREDESTROY    24  /* 5.0 */
  159. #define DIALOG_MESSAGE_PREBUTTON    25  /* 5.0 Used mainly for popup menus */
  160. #define DIALOG_MESSAGE_DOCKEDEXTENT    26  /* 6.0 find size when docked */
  161. #define DIALOG_MESSAGE_WINDOWMOVING        28  /* 6.0 maybe correct size of moving window before move*/
  162. #define DIALOG_MESSAGE_BEFOREUNDOCK        29  /* 6.0 maybe correct size of moving window before move*/
  163.  
  164. /*----------------------------------------------------------------------+
  165. |                                    |
  166. |   Dialog Message Hide Defines                        |
  167. |                                    |
  168. +----------------------------------------------------------------------*/
  169. #define    HIDE_HideWindow            0   /* mdlWindow_hide */
  170. #define    HIDE_ExitingMicroStation    1   /* MicroStation termination */
  171. #define    HIDE_WindowClose        2   /* mdlWindow_close or related */
  172. #define HIDE_NoDgnFile            3   /* only for cmd window */
  173. #define HIDE_UserClose            4   /* User close via system menu icon */
  174. #define HIDE_MdlUnload            5   /* closed because mdl app unloaded */
  175.  
  176. /*----------------------------------------------------------------------+
  177. |                                    |
  178. |                                       |
  179. |                                    |
  180. +----------------------------------------------------------------------*/
  181. #if !defined (resource)
  182. typedef struct dialogitem DialogItem;
  183. typedef struct rawitemhdr RawItemHdr;
  184.  
  185. typedef struct dialoghookinterests  /* set member TRUE if want notification */
  186.     {
  187.     ULong  updates:1;
  188.     ULong  mouses:1;
  189.     ULong  keystrokes:1;
  190.     ULong  dialogFocuses:1;        /* when dialog gets/loses focus */
  191.     ULong  itemFocuses:1;        /* when item get/loses focus */
  192.     ULong  synchs:1;
  193.     ULong  resizes:1;            /* when dialog resized or moved */
  194.     ULong  calcSizes:1;
  195.  
  196.     ULong  fontChanges:1;
  197.     ULong  nonDataPoints:1;        /* send RESET & TENTATIVE msgs */
  198.     ULong  otherDialogs:1;        /* another dialog open & close msgs */
  199.     ULong  stateChangeds:1;
  200.     ULong  minimizes:1;
  201.     ULong  maximizes:1;
  202.     ULong  activates:1;
  203.     ULong  preButtons:1;        /* 5.0 */
  204.     
  205.     ULong  itemNeutralMotions:1;    /* 6.0 - not hooked up yet */
  206.     ULong  itemNeutralNoMotions:1;  /* 6.0 - not hooked up yet */
  207.     ULong  windowMoving:1;        /* 5.5/Draft. Sent Before resize */
  208.     ULong  docking:1;            /* 5.5/Draft. docking related messages */
  209.     ULong  notUsed:4;
  210.  
  211.     ULong  unused:8;
  212.     } DialogHookInterests;  /* CREATE, INIT, & DESTROY ALWAYS SENT */
  213.  
  214. typedef struct dialogmessage
  215.     {
  216.     boolean        msgUnderstood;    /* <= message understood? */
  217.     int            messageType;    /* => message type */
  218.     DialogBox       *db;            /* => dialog box handle */
  219.     long        dialogId;        /* => resource id of dialog box */
  220.     void       *userDataP;        /* => set by user during CREATE */
  221.     union
  222.     {
  223.     struct
  224.         {
  225.         boolean          createFailed;    /* <= set TRUE if error */
  226.         DialogHookInterests      interests;    /* <= */
  227.         void        **userDataPP;    /* <= */
  228.         DialogBoxRsc     *dialogBoxRP;    /* => */
  229.         /*char             *queryStrP;*/    /* => DataBase query statement */
  230.         } create;
  231.  
  232.     struct
  233.         {
  234.         boolean    stopDestroy;    /* <= TRUE means stop destroy */
  235.         boolean    userRequested;    /* => TRUE means user initiated destroy */
  236.                     /*    FALSE means program initiated destroy */
  237.         } beforeDestroy;        /* 5.0 */
  238.     struct
  239.         {
  240.         int        actionType;    /* => only if stdAction button used */
  241.         int        reasonCode;    /* => 5.0; HIDE_xxx */
  242.         } destroy;
  243.     struct
  244.         {
  245.         boolean    initFailed;        /* <= set TRUE if error */
  246.         } init;
  247.         
  248.     struct
  249.         {
  250.         long    whichCorners;        /* => */
  251.         BSIRect    oldFrame;        /* => old frame rectangle */
  252.         BSIRect    oldContent;        /* => old content rectangle */
  253.         BSIRect    newContent;        /* => 5.0; new content rect, global */
  254.         boolean    forceCompleteRedraw;/* <= 5.0; force dialog redraw */
  255.         } resize;
  256.         struct
  257.         {
  258.         boolean    hookHandled;    /* <= TRUE if handled */
  259.         int        newWidth;    /* <= calc'ed width (in pixels) */
  260.         int        newHeight;    /* <= calc'ed height (in pixels) */
  261.         int        dialogWidth;    /* <> in dialog coord units */
  262.         int        dialogHeight;    /* <> in dialog coord units */
  263.         int        newFontHeight;  /* => new font's height */
  264.         int        oldFontHeight;  /* => old font's height */
  265.         } calcSize;
  266.     struct
  267.         {
  268.         int        newFontHeight;  /* => new font's height */
  269.         int        oldFontHeight;  /* => old font's height */
  270.         } fontChanged;        /* because dialog now on new screen */
  271.     struct
  272.         {
  273.         int            buttonNumber;    /* => button number */
  274.         int        buttonTrans;    /* => type of transition */
  275.         int        qualifierMask;    /* => ctrl/alt/shift keys down */
  276.         int        upNumber;    /* => 1=singleClick,2=dblClick,etc */
  277.         boolean    clicked;    /* => FALSE means press or drag */
  278.         ULong    buttonTime;    /* => time of transition */
  279.         Point2d    pt;        /* => location in local coords */
  280.         int        itemIndex;    /* => child item button already send to */
  281.         Inputq_element *iqelP;    /* => source queue element */
  282.  
  283.         /* added after 4.0.2 */
  284.         void    (*motionFunc)(); /* <= for mouse down only */
  285.         void    *motionMD;    /* <= for mouse down only */
  286.  
  287.         RawItemHdr    *buttonRiP;    /* 5.0 */
  288.         } button;
  289.     struct                /* 6.0 */
  290.         {
  291.         int        motionTrans;    /* => type of transition */
  292.         ULong    motionTime;    /* => time of transition */
  293.         Point2d    newPoint;    /* => location in local coords */
  294.         Point2d    oldPoint;    /* => location in local coords */
  295.  
  296.         void    (*motionFunc)(); /* <= item hook may change */
  297.         void    *motionMD;     /* <= item hook may change */
  298.  
  299.         RawItemHdr    *motionRiP;    /* 6.0 */
  300.         } motion;
  301.         struct
  302.         {
  303.         boolean    hookHandled;   /* <= only for hooks,TRUE if handled */
  304.         int        moveDirection; /* <= -1 or 1,to indicate next field */
  305.         int        keystroke;    /* <> virtual keystroke */
  306.         int        rawKeystroke;    /* <> raw keystroke */
  307.         int        qualifierMask;    /* => */
  308.         int        itemIndex;    /* => child item key WOULD be sent to */
  309.         Inputq_element *iqelP;    /* => source queue element */
  310.  
  311.         boolean     isAccelerator;    /* <> key is accelerator */
  312.         ULong     commandNumber;    /* <> accelerator key cmd */
  313.         char    *unparsedP;    /* <> accelerator key unparsed */
  314.         char    *commandTaskIdP; /*<>accelerator key command taskid */
  315.  
  316.         RawItemHdr    *riP;        /* 5.0; item key WOULD be sent to */
  317.         } keystroke;
  318.     struct
  319.         {
  320.         int        itemIndex;    /* => child item about to get focus */
  321.         int        focusOutType;    /* => reason focused out prev item */
  322.         RawItemHdr    *riP;        /* 5.0; item about to get focus */
  323.         } focusIn;
  324.     struct
  325.         {
  326.         boolean    outOfRange;    /* <= if current value out of range */
  327.         int        itemIndex;    /* => child item that just lost focus */
  328.         int        focusOutType;    /* => item fo reason only, FOCUSOUT_? */
  329.  
  330.         int        moveDirection;    /* => 5.0; 1:Forward, -1:Backward */
  331.         boolean    hookHandled;    /* <= 5.0; only for hooks,TRUE if handled */
  332.         int        nextFocusItemIndex; /* 5.0; <>  */
  333.         RawItemHdr *nextFocusRiP;    /* 5.0; <> */
  334.         RawItemHdr *riP;        /* 5.0; item that just lost focus */
  335.         } focusOut;
  336.     struct
  337.         {
  338.         long    childDialogId;    /* => */
  339.         int        actionType;    /* => only if stdAction button used */
  340.         } childDestroyed;
  341.     struct
  342.         {
  343.         boolean    abortAction;    /* <= abort current action */
  344.         int        actionType;    /* => OK, Cancel, Reset, Apply */
  345.         } actionButton;
  346.     struct
  347.         {
  348.         int        type;        /* => type of user message */
  349.         void    *userDataP;    /* => */
  350.         } user;
  351.     struct
  352.         {
  353.         DialogBox    *db;        /* => ptr to dialog opened */
  354.         ULong    dialogType;    /* => type of dialog opened */
  355.         long    dialogId;    /* => id of dialog opened */
  356.         } anotherOpened;
  357.     struct
  358.         {
  359.         DialogBox    *db;        /* => ptr to dialog closed */
  360.         ULong    dialogType;    /* => type of dialog closed */
  361.         long    dialogId;    /* => id of dialog closed */
  362.         int        actionType;    /* => only if stdAction button used */
  363.         } anotherClosed;
  364.     struct
  365.         {
  366.         int        itemIndex;    /* => index of child that changed */
  367.         boolean    reallyChanged;    /* => if setState noticed difference*/
  368.         RawItemHdr    *riP;        /* => 5.0; item that changed */
  369.         } stateChanged;
  370.     struct
  371.         {
  372.         int    reason;        /* => reason for dialog being hidden */
  373.         } hide;
  374.     struct
  375.         {
  376.         boolean    hookHandled;    /* <= TRUE if handled */
  377.         int        newWidth;    /* <= new content width (pixels) */
  378.         int        newHeight;    /* <= new content height (pixels) */
  379.         } minimize;
  380.     struct
  381.         {
  382.         boolean hookHandled;    /* <= TRUE if handled */
  383.         BSIRect newRect; /* <= new content rectangle (global, pixels) */
  384.         } maximize;
  385.     struct
  386.         {
  387.         ULong    couldSetState;    /* <= if not modal, could set State */
  388.  
  389.         RawItemHdr    *activatedRiP;    /* => ptr to activated item */
  390.         int        itemIndex;    /* => index of activated child item */
  391.         int        keystroke;    /* => virtual keystroke */
  392.         int        rawKeystroke;    /* => raw keystroke */
  393.         int        qualifierMask;    /* => modifier keys status */
  394.         boolean    isAccelerator;    /* => key is accelerator */
  395.         ULong       commandNumber;    /* => accelerator key cmd */
  396.         char    *unparsedP;    /* => accelerator key unparsed */
  397.         char    *commandTaskIdP; /*=> accelerator key command taskid */
  398.         } activate;            /* 5.0 */
  399.     struct
  400.         {                /* 5.5 & Draft - get dialog's extent when docked */
  401.         int        dockPosition;    /* => DOCK_TOP, _LEFT, _BOTTOM, _RIGHT */
  402.         int        extentFlag;    /* <= DOCKEXTENT_DONTCARE, _FULLWIDTHORHEIGHT,
  403.                         or _SPECIFIED */
  404.         Point2d    dockExtent;    /* <= extent when in docked state */
  405.         BoolInt     hookHandled;    /* <= TRUE if Dialog Hook handled */
  406.         } dockedExtent;
  407.      struct
  408.         {                /* 5.5 & Draft - sent before move occurs */
  409.         int        whichCorners;    /* => which corners are moving */
  410.         int        newWidth;      /* <> new content width, dialog may change */
  411.         int        newHeight;      /* <> new content height, dialog may change */
  412.         BSIRect    oldGlobal;      /* => old global rect for window */
  413.         BSIRect    oldContent;      /* => old content rect */
  414.         byte        percentDone;    /* <= to negotiate. Set to 100 => dialog not called */
  415.         byte     handled;        /* <= set TRUE if window size was changed */
  416.         } windowMoving;
  417.      struct
  418.         {
  419.         boolean    stopUndock;    /* <= TRUE means stop undock */
  420.         } beforeUndock;        /* 5.5 */
  421.  
  422.      } u;
  423.     } DialogMessage;
  424.  
  425. #endif    /* !defined (resource) */
  426.  
  427. /*----------------------------------------------------------------------+
  428. |                                    |
  429. |   Dialog Item Messages                        |
  430. |                                    |
  431. |   Sent to itemHandlers & itemHooks (specified within actual item)    |
  432. |                                    |
  433. +----------------------------------------------------------------------*/
  434. /*----------------------------------------------------------------------+
  435. |                                    |
  436. |   Dialog Item Message Type Constants                    |
  437. |                                    |
  438.     FOCUSOUT    About to move out of field, now is the time to validate    |
  439. |                                    |
  440. +----------------------------------------------------------------------*/
  441. #define DITEM_MESSAGE_CREATE        50
  442. #define DITEM_MESSAGE_DESTROY        51
  443. #define DITEM_MESSAGE_DRAW        52
  444. #define DITEM_MESSAGE_FONTCHANGED    53
  445. #define DITEM_MESSAGE_BUTTON        54
  446. #define DITEM_MESSAGE_SETSTATE        55
  447. #define DITEM_MESSAGE_SYNCHRONIZE    56    /* match app state */
  448. #define DITEM_MESSAGE_HIGHLIGHT        57
  449.  
  450. /* Messages only sent to keystrokable items */
  451. #define DITEM_MESSAGE_KEYSTROKE        58
  452. #define DITEM_MESSAGE_POSTKEYSTROKE    59  /* after default processing */
  453. #define DITEM_MESSAGE_FOCUSIN        60
  454. #define DITEM_MESSAGE_FOCUSOUT        61
  455.  
  456. /* Messages for application support (not sent by dialog manager) */
  457. #define DITEM_MESSAGE_SETENABLEDSTATE   62
  458. #define DITEM_MESSAGE_MOVE        63
  459. #define DITEM_MESSAGE_SETEXTENT        64
  460. #define DITEM_MESSAGE_SETLABEL      65
  461. #define DITEM_MESSAGE_GETSTATE        66 /* gets appl state */
  462. #define DITEM_MESSAGE_GETVALUE        67 /* gets item value not app state */
  463. #define DITEM_MESSAGE_SETVALUE        68 /*does NOT set application state*/
  464.  
  465. /* item hook messages (never sent TO item handlers) */
  466. #define DITEM_MESSAGE_INIT        69    /* after initial getState */
  467. #define DITEM_MESSAGE_QUEUECOMMAND    70
  468. #define DITEM_MESSAGE_STATECHANGED    71    /* notification only */
  469. #define DITEM_MESSAGE_USER        72
  470. #define DITEM_MESSAGE_ALLCREATED    73    /* 4.2 */
  471.  
  472. /* Post 5.0 messages */
  473. #define DITEM_MESSAGE_DOWNMOTION    74    /* 5.0 */
  474. #define    DITEM_MESSAGE_MOTION          75     /* 6.0 */
  475. #define    DITEM_MESSAGE_NOMOTION          76     /* 6.0 */
  476. #define    DITEM_MESSAGE_WINDOWMOVING         77     /* 6.0 Notification before dialog move */
  477.  
  478. /* handler initialization & cleanup messages */
  479. #define    DITEM_MESSAGE_HANDLERLOADED    100
  480. #define DITEM_MESSAGE_HANDLERUNLOADED    101
  481.  
  482. #define DITEM_MESSAGE_ACTIVATE        110    /* 5.0 */
  483. #define DITEM_MESSAGE_ATTACH        111    /* 5.0 */
  484. #define DITEM_MESSAGE_GENRESOURCE    112    /* 5.0 */
  485. #define DITEM_MESSAGE_GUIMODECHANGED    113    /* 5.0; userPrefsP->guiMode changed */
  486. #define DITEM_MESSAGE_GETMNEMONICS    114    /* 5.0; */
  487. #define DITEM_MESSAGE_SHOWHELP        115    /* 5.0 */
  488. #define DITEM_MESSAGE_CLEANUP        116    /* 5.0 */
  489. #define    DITEM_MESSAGE_JOURNALSTATE      117     /* 6.0 */
  490. #define DITEM_MESSAGE_REDIRECT         118      /* 6.0 */
  491.  
  492. /*----------------------------------------------------------------------+
  493. |                                    |
  494. |   CursorMotion Transition types: used in u.motion.transType -- 6.0    |
  495. |                                    |
  496. +----------------------------------------------------------------------*/
  497. #define    MOTION_IN_ITEM                  0     /* 6.0 - Moving inside item*/
  498. #define    MOTION_ENTER                  1     /* 6.0 - Just Entered Item*/
  499. #define    MOTION_EXIT                  2     /* 6.0 - Exiting from Item*/
  500.  
  501. /*----------------------------------------------------------------------+
  502. |                                    |
  503. |   Item Focus Out Types                        |
  504. |                                    |
  505. +----------------------------------------------------------------------*/
  506. #define FOCUSOUT_KEYSWITCH        1   /* TABed or RETURNed out */
  507. #define FOCUSOUT_BUTTONSWITCH        2   /* clicked in new item */
  508. #define FOCUSOUT_SETITEM        3
  509. #define FOCUSOUT_HIDEITEM        4
  510. #define FOCUSOUT_DISABLEITEM        5
  511. #define FOCUSOUT_SWITCHDIALOG        10
  512. #define FOCUSOUT_APPLYDIALOG        11
  513.  
  514. /*----------------------------------------------------------------------+
  515. |                                    |
  516. |   Message Box Icon Types (6.0 Addition)                |
  517. |                                    |
  518. |   6.0 Addition   ==>> For  mdlDialog_openMessageBox           |
  519. +----------------------------------------------------------------------*/
  520. #define MSGBOX_ICON_NOSYMBOL        0   /* Means Don't draw Symbol */
  521. #define MSGBOX_ICON_INFORMATION        1   /* Lower Case i */
  522. #define MSGBOX_ICON_QUESTION               2   /* Question Mark */
  523. #define MSGBOX_ICON_WARNING               3   /* Exclamation Point */
  524. #define MSGBOX_ICON_CRITICAL               4   /* Stop Sign */
  525. #define MSGBOX_ICON_MSBUG_LARGE         5   /* MicroStation Bug (Large) */
  526. #define MSGBOX_ICON_LASTSYMBOL        MSGBOX_ICON_MSBUG_LARGE
  527.  
  528. /*----------------------------------------------------------------------+
  529. |                                    |
  530. |   Keep Mouse BitMasks -- used in u.button.couldSetState answers    |
  531. |                                    |
  532. +----------------------------------------------------------------------*/
  533. #define BUTTONUPMASK_COULDSETSTATE    0x1
  534. #define BUTTONUPMASK_KEEPMOUSE        0x2
  535. #define BUTTONUPMASK_HOOKHANDLED    0x4
  536.  
  537. #if !defined (resource)
  538. /*----------------------------------------------------------------------+
  539. |                                    |
  540. |   Dialog Item Attributes                        |
  541. |                                    |
  542. +----------------------------------------------------------------------*/
  543. typedef struct dialogitemattributes
  544.     {
  545.     ULong  acceptsKeystrokes:1;
  546.     ULong  mouseSensitive:1;
  547.     ULong  traversable:1;    /* acceptsKeys if user has dialog traversal enabled */
  548.     ULong  canHaveSynonyms:1;
  549.     ULong  enabled:1;
  550.     ULong  hidden:1;
  551.     ULong  hasFocus:1;
  552.     ULong  updateFlag:1;    /* internal use only */
  553.  
  554.     ULong  xPosLocked:1;    /* when centering slamdowns, internal use only */
  555.     ULong  yPosLocked:1;    /* when centering slamdowns, internal use only */
  556.     ULong  containsIconCommand:1; /* mark all icon's parent containers -- 6.0 */
  557.     ULong  containsChildItems:1; /* TRUE - This is a container item  -- 6.0 */
  558.     ULong  unused:4;
  559.  
  560.     ULong  unused2:8;
  561.     ULong  unused3:8;
  562.     } DialogItemAttributes;
  563.  
  564. /*----------------------------------------------------------------------+
  565. |                                    |
  566. |   DialogItem Structure -- contains info from item list        |
  567. |                specification and other non-item type    |
  568. |                specific info.                |
  569. |                                    |
  570. |   Do not instantiate.                            |
  571. |   (only do DialogItem *diP; NOT                    |
  572. |            DialogItem     dialogItem;)                    |
  573. |                                    |
  574. +----------------------------------------------------------------------*/
  575. typedef struct dialogitemhandlerinfo DialogItemHandlerInfo;
  576.  
  577. struct dialogitem
  578.     {
  579.     ULong        type;    /* type of item, ie. RTYPE_PushButton */
  580. #if defined (m68k)
  581.     long        (id);    /* id of item */
  582. #else
  583.     long        id;        /* id of item */
  584. #endif
  585.     int            itemIndex;    /* position within parent */
  586.     int            itemArg;    /* item arg */
  587.     BSIRect        rect;    /* mouse sensitive/update region of item */
  588.     Sextent        extent;    /* (in dcoord units) for fontChange msgs */
  589.     Point2d        origin;    /* (dcoord units) for fontChange msgs */
  590.  
  591.     DialogItemAttributes  attributes;
  592.     RawItemHdr         *rawItemP;
  593.     DialogItem         *parentDiP;
  594.     };
  595.  
  596. /*----------------------------------------------------------------------+
  597. |                                    |
  598. |   Dialog Item Message Structures                    |
  599. |                                    |
  600. +----------------------------------------------------------------------*/
  601. typedef struct dialogitemmessage
  602.     {
  603.     boolean        msgUnderstood;    /* <= item understood the message */
  604.     int            messageType;    /* => message type */
  605.     DialogBox       *db;            /* => dialog box handle */
  606.     long        dialogId;        /* => resource id of dialog box */
  607.     int            itemIndex;        /* => index of child item message sent to */
  608.     DialogItem       *dialogItemP;    /* => dialogItem info for item */
  609.     int            auxMessageType;    /* => item specific message type */
  610.     void       *auxInfoP;        /* => item specific message info */
  611.     union
  612.     {
  613.     struct
  614.         {
  615.         boolean         createFailed;  /* <= set TRUE if error */
  616.         void        *resourceDataP; /* => */
  617.         Sextent        *itemListExtentP;    /* => */
  618.         char        *labelP;        /* => override label ptr */
  619.         char        *auxInfoP;        /* => ptr to auxInfo string */
  620.         long         itemArg;        /* => */
  621.         void        *ownerMD;        /* => */
  622.         DialogItem        *parentDiP;        /* => null if owner is dialog */
  623.  
  624.         boolean         dontDisplayAlert; /* <= 5.0; */
  625.         RscFileHandle    childRFileH;      /* => 5.5; the rsc file handle passed into the child create function */
  626.         } create;
  627.     struct
  628.         {
  629.         boolean         eraseFirst;    /* => erase before drawing */
  630.         int             nRects;        /* => # of update rects */
  631.         BSIRect        *rectList;        /* => update rects(local coords)*/
  632.         } draw;
  633.     struct
  634.         {
  635.         boolean    hookHandled;    /* <= TRUE if handled */
  636.         int        newFontHeight;  /* => new font's height */
  637.         int        oldFontHeight;  /* => old font's height */
  638.         } fontChanged;        /* because dialog now on new screen */
  639.     struct
  640.         {
  641.         ULong    couldSetState;    /* <= if not modal, could set State */
  642.         void    (*motionFunc)(); /* <= for mouse down only */
  643.         void    *motionMD;    /* <= for mouse down only
  644.                        (only for item handlers) */
  645.  
  646.         int            buttonNumber;    /* => button number */
  647.         int        buttonTrans;    /* => type of transition */
  648.         int        qualifierMask;    /* => ctrl/alt/shift keys down */
  649.         int        upNumber;    /* => 1=singleClick,2=dblClick,etc */
  650.         boolean    clicked;    /* => FALSE means press or drag */
  651.         ULong    buttonTime;    /* => time of transition */
  652.         Point2d    pt;        /* => point in local coords */
  653.         Inputq_element  *iqelP;
  654.         } button;
  655.     struct                /*6.0 NeutralMotion Events*/
  656.         {
  657.         int        motionTrans;    /* => type of transition */
  658.         ULong    motionTime;    /* => time of transition */
  659.         Point2d    newPoint;    /* => location in local coords */
  660.         Point2d    oldPoint;    /* => location in local coords */
  661.  
  662.         void    (*motionFunc)(); /* <= item hook may change */
  663.         void    *motionMD;     /* <= item hook may change */
  664.  
  665.         RawItemHdr    *motionRiP;    /* 6.0 */
  666.         int        eventCreatedBy;     /* 0-handler, 16,17 pointer exit & enter*/
  667.         BoolInt    otherWinPopup;     /* TRUE if other win part of cursor msg was a popup*/
  668.         } motion;
  669.     struct                /*6.0*/
  670.         {
  671.         ULong    time;           /* => time of transition */
  672.         Point2d    pt;            /* => location in local coords */
  673.  
  674.         void    (*noMotionFunc)(); /* <= item hook may change */
  675.         void    *noMotionMD;       /* <= item hook may change */
  676.         RawItemHdr    *noMotionRiP;       /* current message sent to this item */
  677.         int        showBalloon;       /* TRUE to show */
  678.         RawItemHdr    *previousRiP;       /* previous message to this item */
  679.         } noMotion;
  680.     struct
  681.         {
  682.         boolean    redrawn;    /* => item had to be redrawn */
  683.         } synchronize;
  684.     struct
  685.         {
  686.         boolean    highlightOn;
  687.         } highlight;
  688.         struct
  689.         {
  690.         boolean    hookHandled;   /* <= only for hooks,TRUE if handled */
  691.         int        moveDirection; /* <= -1 or 1,to indicate next field */
  692.         int        keystroke;    /* <> virtual keystroke */
  693.         int        rawKeystroke;    /* <> raw keystroke */
  694.         int        qualifierMask;    /* => */
  695.         Inputq_element  *iqelP;    /* => */
  696.         int        cursorIndex; /* => hook only, charIndex curs before */
  697.  
  698.         boolean     isAccelerator;    /* <> key is accelerator */
  699.         ULong     commandNumber;    /* <> accelerator key cmd */
  700.         char    *unparsedP;    /* <> accelerator key unparsed */
  701.         char    *commandTaskIdP; /*<>accelerator key command taskid */
  702.         } keystroke;         /* also for POSTKEYSTROKE msgs */
  703.     struct
  704.         {
  705.         int        focusOutType;    /* => reason focused out prev item */
  706.         } focusIn;
  707.     struct
  708.         {
  709.         boolean    hookHandled;   /* <= only for hooks,TRUE if handled */
  710.         boolean    outOfRange;    /* <= if current value out of range */
  711.         int        nextFocusItemIndex; /* <> */
  712.         char    *stringValueP; /* => hooks only, string value */
  713.         char    *formatStrP;   /* => hooks only, to internal format */
  714.         char    *minStrP;      /* => hooks only, max string */
  715.         char    *maxStrP;      /* => hooks only, min string */
  716.         int         focusOutType; /* => reason focus out, FOCUSOUT_? */
  717.         int         moveDirection; /* => 1:Forward, -1:Backward */
  718.  
  719.         RawItemHdr    *nextFocusRiP;    /* 5.0; */
  720.         } focusOut;
  721.  
  722.     struct
  723.         {
  724.         boolean    enabled;    /* => */
  725.         } setEnabledState;
  726.         struct
  727.         {
  728.         Point2d    newPt;    /* => new origin(pixels) rawItemHdr.itemRect*/
  729.         boolean    redraw;        /* => redraw at new position? */
  730.         } move;
  731.     struct
  732.         {
  733.         /* used as if resource extent was respecified (except in pixels)*/
  734.         Sextent    sextent;    /* => pixels */
  735.         boolean    redraw;        /* => redraw at new position? */
  736.         } setExtent;
  737.     struct
  738.         {
  739.         char    *newLabelP;    /* => */
  740.         } setLabel;
  741.     struct        /* used by GETSTATE, SETSTATE, GETVALUE, SETVALUE */
  742.         {
  743.         boolean     hookHandled;  /* <= only for hooks,TRUE if handled */
  744.         boolean     valueChanged; /* <= on SET's if value changed */
  745.         int         formatType;   /* defined in vartypes.h */
  746.         ValueUnion     value;
  747.  
  748.         char    *stringValueP;    /* only if string */
  749.         char    *formatStrP;    /* only if string */
  750.         int         maxStringSize; /* only if string & GETs */
  751.  
  752.         char    *accessStrP;    /* in case an item has more than one access string */
  753.         int         voidDataSize;    /* if void pointer is being passed in ValueUnion */
  754.         } value;
  755.  
  756.     struct
  757.         {
  758.         boolean    initFailed;    /* <= set TRUE if error */
  759.         } init;            /* sent after initial GetState */
  760.     struct
  761.         {
  762.         boolean    hookHandled;   /* <= only for hooks,TRUE if handled */
  763.         int        subItemIndex;  /* => */
  764.         ULong       commandNumber;   /* 6.0 / Draft addition - IconCmdX only*/
  765.         char    *commandTaskIdP; /* 6.0 / Draft addition - IconCmdX only*/    
  766.         } queueCommand;
  767.     struct
  768.         {
  769.         boolean    reallyChanged;    /* => if setState noticed difference*/
  770.         } stateChanged;
  771.     struct
  772.         {
  773.         int        type;        /* => type of user message */
  774.         void    *userDataP;     /* => */
  775.         } user;
  776.     struct
  777.         {
  778.         boolean    createFailed;    /* <= set TRUE if error */
  779.         } allCreated;        /* 4.2 */
  780.     struct
  781.         {
  782.         DialogItemHandlerInfo   *itemHandlerP;  /* => */
  783.         } handlerLoaded;        /* 5.0 */
  784.     struct
  785.         {
  786.         ULong    couldSetState;    /* <= if not modal, could set State */
  787.  
  788.         int        keystroke;    /* => virtual keystroke */
  789.         int        rawKeystroke;    /* => raw keystroke */
  790.         int        qualifierMask;    /* => modifier keys status */
  791.         boolean    isAccelerator;    /* => key is accelerator */
  792.         ULong       commandNumber;    /* => accelerator key cmd */
  793.         char    *unparsedP;    /* => accelerator key unparsed */
  794.         char    *commandTaskIdP; /*=> accelerator key command taskid */
  795.         } activate;            /* 5.0; */
  796.  
  797.     struct
  798.         {
  799.         void    *resourceP;    /* <= ptr to created resource */
  800.         long     size;        /* <= size of created resource */
  801.         } genResource;        /* 5.0 */
  802.     struct
  803.         {
  804.         Point2d    pt;
  805.         boolean    dragging;    /* => TRUE if we've moved "DELTA" from down pt */
  806.         } mouseMotion;        /* 5.0 */
  807.         struct
  808.         {
  809.         int        *mnemonicsP;    /* <= array of mnemonic chars */
  810.         char       **labelsPP;    /* <= array ptrs to actual labels */
  811.         int        *mneIndicesP;    /* <= array of mnemonic indices */
  812.         int        nMnemonics;    /* <= # of mnemonics */
  813.         int        maxNMnemonics;    /* => max # of mnemonics returnable (50) */
  814.         boolean    allLabels;    /* => TRUE means return all labels */
  815.         } getMnemonics;        /* 5.0 */
  816.     struct
  817.         {
  818.         boolean     hookHandled;    /* <= TRUE if handled */
  819.         } showHelp;            /* 5.0 */
  820.     struct
  821.         {
  822.         void    *ownerDialogP;
  823.         } cleanUp;            /* 5.0 */
  824.         struct
  825.         {
  826.         BoolInt    hookHandled;   /* <= only for hooks,TRUE if handled */
  827.         BoolInt    redirectAllowed; /* <= set to FALSE => send to item. */
  828.         int        keystroke;    /* <> virtual keystroke */
  829.         int        rawKeystroke;    /* <> raw keystroke */
  830.         int        qualifierMask;    /* => */
  831.         Inputq_element *iqelP;    /* => source queue element */
  832.  
  833.         ULong     commandNumber;    /* <> accelerator key cmd */
  834.         char    *unparsedP;    /* <> accelerator key unparsed */
  835.         char    *commandTaskIdP; /*<>accelerator key command taskid */
  836.         } keystrokeRedirect;
  837.         struct
  838.         {                /* Draft/5.5 addition */
  839.         int        whichCorners;    /* => which corners of the dialog are moving */
  840.         int        newWidth;      /* <> new content Width,  items may change */
  841.         int        newHeight;      /* <> new content height, items may change */
  842.         BSIRect    oldGlobal;      /* => old global rect for window */
  843.         BSIRect    oldContent;      /* => old content rect */
  844.         byte         percentDone;    /* <= to negotiate. Set to 100 => dialog not called */
  845.         byte     handled;        /* <= TRUE if window size was changed */
  846.         } windowMoving;
  847.  
  848.     } u;
  849.     } DialogItemMessage;
  850.  
  851. /*----------------------------------------------------------------------+
  852. |                                    |
  853. |   RawItemHdr structure -- contains info usually specified in        |
  854. |                item resources and other item type specific    |
  855. |                info.                    |
  856. |                                    |
  857. |   Do not instantiate.                            |
  858. |   (only do RawItemHdr *riP; NOT                    |
  859. |            RawItemHdr     rawItemHdr;)                    |
  860. |                                    |
  861. +----------------------------------------------------------------------*/
  862. /* the following structure must be at the beginning of all runtime items */
  863. struct rawitemhdr
  864.     {
  865.     void    *userDataP;        /* for use by itemHooks */
  866.     char    *accessStrP;    /* access str to application variable */
  867.  
  868.     char     *labelP;        /* items label or NULL */
  869.     Point2d   labelPt;        /* position of label */
  870.     BSIRect   itemRect;        /* item specific rectangle */
  871.     ULong     helpInfo;        /* item help */
  872.     ULong     helpSource;    /* help file indicator */
  873.     long      synonymsId;    /* id of synonyms resource */
  874.  
  875.     UShort    highlightOn:1;    /* highlight state */
  876.     UShort    informMotion:1;    /* 5.0; not supported all items */
  877.     UShort    focusOutSetState:1;   /* 5.0; a focus out should cause auto-setState */
  878.     UShort    commandSource:1;      /* 5.0; TRUE means local cmd, FALSE=ustn cmd */
  879.     UShort    prevNoMotionItem:1;   /* 6.0 Item must send clear before destroy */
  880.     UShort    prevMotionItem:1;        /* 6.0 Item must send clear before destroy */
  881.     UShort    unused:2;
  882.  
  883.     void    *itemHookMD;    /* mdl process descriptor for hook */
  884.     long     itemHookOffset;    /* mdl hook offset */
  885.     long     itemHookArg;    /* rsc defined arg to hook function */
  886.     void    *ownerDialogP;    /* ptr to owner dialog box */
  887.     DialogItem    *diP;        /* ptr to dialog item struct */
  888.     RawItemHdr    *parentRiP;    /* ptr to parent raw item struct */
  889.  
  890.     long     itemHookId;    /* 4.1.0.x; needed to regen resources */
  891.     int         mnemonic;        /* 5.0; */
  892.     int         mneIndex;        /* 5.0; */
  893.  
  894.     int                nColorPs;        /* 5.0; */
  895.     BSIColorDescr        **colorsPP;        /* 5.0; */
  896.     DialogItemHandlerInfo   *itemHandlerP;  /* 5.0; */
  897.     BSIRect   traversalRect;        /* 5.0; internal use only */
  898.     void     *ownerMD;            /* 5.0 */
  899.     ULong     commandNumber;
  900.  
  901.     char     *commandTaskIdP;        /* 5.0 */
  902.     char     *unparsedP;        /* 5.0 */
  903.     void     *auxP;            /* 5.0; RESERVED; do not use */
  904.     void     *popupWindP;        /* 5.0; only valid for some item types */
  905.  
  906.     RawItemHdr        *childFocusRiP;    /* 5.0; child who has focus */
  907.     ArrayObjectHdr  *childArrayP;    /* 5.0; array of ptrs to child diPs */
  908.  
  909.     char        *rscOwnerTaskIdP;    /* Draft; task which owns this item's resources*/
  910.     char        *flyoverTextP;          /* Draft; flyover text (on neutral motion events) */
  911.     char        *balloonTextP;          /* Draft; balloon help text */
  912.  
  913.     char        *dbAccessStrP;          /* 5.5; Data base access string */
  914.     void        *dbAuxInfoP;          /* 5.5; aux info for database hooks */
  915.     long        dbPageNumber;          /* 5.5; pageNumber -- database hooks */
  916.     };
  917. #endif    /* !defined (resource) */
  918.  
  919. /*----------------------------------------------------------------------+
  920. |                                    |
  921. |   Dialog System Messages -- Only sent to filter functions.        |
  922. |                  Not sent to dialogs or items.  Used for    |
  923. |                  special event notification.        |
  924. |                                    |
  925. +----------------------------------------------------------------------*/
  926. #define DSYSTEM_MESSAGE_SELECTICONSBYCMD 1  /* about to select icons by cmd */
  927. #define DSYSTEM_MESSAGE_SELECTICONSBYID     2  /* about to select icons by id */
  928.  
  929. /*----------------------------------------------------------------------+
  930. |                                    |
  931. |                                       |
  932. |                                    |
  933. +----------------------------------------------------------------------*/
  934. #if !defined (resource)
  935. typedef struct dialogsystemmessage
  936.     {
  937.     int            messageType;    /* => message type */
  938.     union
  939.     {
  940.     struct
  941.         {
  942.         DialogBox    *initiatingDb;    /* => NULL or initiating dialog */
  943.         ULong     commandNumber;    /* => 0 means use stateData.commandNumber */
  944.         char    *taskId;    /* => NULL means use stateData.procNumber */
  945.         int         selectType;    /* => NORMALLY -1, means use last selctType */
  946.         } selectIconsByCmd;
  947.     struct
  948.         {
  949.         long     iconId;
  950.         void    *ownerMD;
  951.         int         selectType;
  952.         boolean  deselectOthers;
  953.         boolean  updateToolSettings;
  954.         } selectIconsById;
  955.     } u;
  956.     } DialogSystemMessage;
  957. #endif    /* !defined (resource) */
  958.  
  959. /*----------------------------------------------------------------------+
  960. |                                    |
  961. |   Message Dialog Control Bits                        |
  962. |                                    |
  963. +----------------------------------------------------------------------*/
  964. #define    MSGDLOG_BYPASSALLMSGS        0x0001
  965. #define MSGDLOG_BYPASSCEXPRMSGS        0x0002
  966.  
  967. /*----------------------------------------------------------------------+
  968. |                                    |
  969. |   Dialog Editor Message Type Constants                |
  970. |                                    |
  971. +----------------------------------------------------------------------*/
  972. #define DEDITOR_MESSAGE_EDIT        1
  973. #define DEDITOR_MESSAGE_FREEEDITCOPY    2
  974. #define DEDITOR_MESSAGE_REGENRSRC    3
  975. #define DEDITOR_MESSAGE_GENSOURCE    4
  976.  
  977. /*----------------------------------------------------------------------+
  978. |                                    |
  979. |   Dialog Editor Message Structures                    |
  980. |                                    |
  981. +----------------------------------------------------------------------*/
  982. #if !defined (resource)
  983. typedef struct dialogeditormessage
  984.     {
  985.     boolean        msgUnderstood;    /* <= editor understood the message */
  986.     ULong        editorType;        /* => editor type */
  987.     int            messageType;    /* => message type */
  988.     DialogItem       *diP;        /* => dialog item to edit or */
  989.     void       *dataP;        /* => data to edit */
  990.     int            auxMessageType;    /* => data specific message type */
  991.     void       *auxInfoP;        /* => data specific message info */
  992.     union
  993.     {
  994.     struct
  995.         {
  996.         boolean  dataChanged;    /* <= data was changed */
  997.         boolean  hadToMakeCopy;    /* <= because resource bigger or smaller */
  998.         void    *dataCopyP;        /* <= here's the new copy of data */
  999.  
  1000.         ULong    readOnly:1;    /* => don't actually edit item */
  1001.         ULong    unused:31;
  1002.  
  1003.         DialogItemAttributes    *attributesP;   /* real item attributes */
  1004.  
  1005.         void    *eraseMD;
  1006.         long     eraseOffset;
  1007.         void    *ssetP;
  1008.         } edit;
  1009.     } u;
  1010.     } DialogEditorMessage;
  1011.  
  1012. /*----------------------------------------------------------------------+
  1013. |                                    |
  1014. |   Dialog Item Handler functions "Publishing" structure        |
  1015. |                                    |
  1016. |   READONLY. Do not instantiate.                    |
  1017. |   (only do DialogItemHandlerInfo *itemHandlerP; NOT            |
  1018. |            DialogItemHandlerInfo  itemHandler;            |
  1019. |                                    |
  1020. +----------------------------------------------------------------------*/
  1021. typedef struct dialogitemhandler
  1022.     {
  1023.     long        itemType;
  1024.     void        (*itemHandlerFunction)();
  1025.     char        name[20];
  1026.     VersionNumber   version;
  1027.     } DialogItemHandler;
  1028.  
  1029. struct dialogitemhandlerinfo
  1030.     {
  1031.     DialogItemHandler     handler;
  1032.     void        *handlerMD;
  1033.     BSIColorDescr    **handlerColorsP[GUIMODE_NUMBER];
  1034.  
  1035.     ULong   bevelOffset:1;        /* bevel offset -2 pixels? */
  1036.     ULong   informDialogResized:1;  /* send set extent msg when dialog resized */
  1037.     ULong   noItemResource:1;        /* no item resource just item list spec */
  1038.     ULong   canKeepMouse:1;        /* doesn't free mouse even when button comes up */
  1039.     ULong   informGuiChanged:1;        /* inform when userPrefsP->guiMode changed */
  1040.     ULong   acceptsNonDataPoints:1;  /* responds to non-data pnts */
  1041.     ULong   informNeutralMotion:1;   /* send motion events for flyover text */
  1042.     ULong   informNeutralNoMotion:1;  /* send noMotion events for balloon help popups*/
  1043.     ULong   handlesDocking:1;       /* understands DOCKEDEXTENT, DOCK, UNDOCK messages */
  1044.     ULong   unused:23;
  1045.  
  1046.     ULong   attributes2;
  1047.     ULong   reserved1;
  1048.     ULong   reserved2;
  1049.     };                    /* 5.0 */
  1050.  
  1051. /*----------------------------------------------------------------------+
  1052. |                                    |
  1053. |   Dialog Hook functions "Publishing" structure            |
  1054. |                                    |
  1055. |   Used for both dialog hooks & dialog item hooks.            |
  1056. |                                    |
  1057. +----------------------------------------------------------------------*/
  1058. typedef struct dialoghookinfo
  1059.     {
  1060.     long    hookId;
  1061.     void    (*dialogHookFunction)();
  1062.     } DialogHookInfo;
  1063.  
  1064. /*----------------------------------------------------------------------+
  1065. |                                    |
  1066. |   SplitString Structure -- Used when word wrapping text        |
  1067. |                                    |
  1068. +----------------------------------------------------------------------*/
  1069. typedef struct splitstringline
  1070.     {
  1071.     int          nBytes;        /* # of bytes in line (not nec == # of chars) */
  1072.     int          width;        /* width of line in pixels */
  1073.     UChar    *lineP;        /* ptr to start of line */
  1074.     Point2d   pt;        /* can be set pos of line start */
  1075.     void     *userDataP;    /* ptr to user data */
  1076.     } SplitStringLine;
  1077.  
  1078. typedef struct splitstring
  1079.     {
  1080.     int             nLines;
  1081.     SplitStringLine *lines;
  1082.     } SplitString;
  1083.  
  1084. /*----------------------------------------------------------------------+
  1085. |                                    |
  1086. |   Structure for motionFunc Argument                    |
  1087. |                                    |
  1088. +----------------------------------------------------------------------*/
  1089. typedef struct motionfuncarg
  1090.     {
  1091.     Point2d     pt;        /* => current cursor location (global coords) */
  1092.     boolean     dragging;   /* => TRUE if we've moved "DELTA" from down pt */
  1093.     DialogBox     *db;         /* => DialogBox the cursor is in, 6.0 addition */
  1094.     } MotionFuncArg;
  1095.  
  1096. /*----------------------------------------------------------------------+
  1097. |                                    |
  1098. |   Auxiliary Message Structures                    |
  1099. |                                    |
  1100. |   These structures are only needed by item handler writers emulating    |
  1101. |   the standard BSI items.  This section can and should be ignored by    |
  1102. |   most readers.                            |
  1103. |                                    |
  1104. +----------------------------------------------------------------------*/
  1105. /*----------------------------------------------------------------------+
  1106. |                                    |
  1107. |   Dialog Editor Auxiliary Messages; Version 6.0 Addition        |
  1108. |                                    |
  1109. +----------------------------------------------------------------------*/
  1110. #define DEDITOR_AUXMESSAGE_RSCINFO            1
  1111.  
  1112. typedef struct dialogeditor_rscinfo
  1113.     {
  1114.     int         devEnv;         /* => DEVENV_MDL_C, DEVENV_BASIC */
  1115.     char        *binResFileNameP;/* => binary resource filename of the resource */
  1116.     } DialogEditor_RscInfo;
  1117.  
  1118. /*----------------------------------------------------------------------+
  1119. |                                    |
  1120. |   Tool Box Item Auxiliary Messages; Version 6.0 Addition        |
  1121. |                                    |
  1122. +----------------------------------------------------------------------*/
  1123. #define TOOLBOX_AUXMESSAGE_DOCKEDEXTENT     20
  1124.  
  1125. typedef struct toolbox_dockedextent
  1126.     {
  1127.     int        dockPosition;    /* => DOCK_TOP, _LEFT, _BOTTOM, _RIGHT */
  1128.     int        extentFlag;    /* <= DOCKEXTENT_DONTCARE, _FULLWIDTHORHEIGHT,
  1129.                             or _SPECIFIED */
  1130.     Point2d    dockExtent;    /* <= extent when in docked state */
  1131.     } ToolBox_DockedExtent;
  1132.  
  1133. /*----------------------------------------------------------------------+
  1134. |                                    |
  1135. |   Button Group Item Auxiliary Messages; Version 5.0 Addition        |
  1136. |                                    |
  1137. +----------------------------------------------------------------------*/
  1138. #define BUTTONGROUP_AUXMESSAGE_SETENABLED     1
  1139. #define BUTTONGROUP_AUXMESSAGE_GETSUBINFO       2
  1140. #define BUTTONGROUP_AUXMESSAGE_SETSUBINFO    3
  1141. #define BUTTONGROUP_AUXMESSAGE_NITEMS        4
  1142. #define BUTTONGROUP_AUXMESSAGE_INSERTSUBITEM    5
  1143. #define BUTTONGROUP_AUXMESSAGE_DELETEITEM    6
  1144. #define BUTTONGROUP_AUXMESSAGE_DELETEALL    7
  1145. #define BUTTONGROUP_AUXMESSAGE_DRAWITEM        8
  1146.  
  1147. typedef struct buttongroup_setenabled
  1148.     {
  1149.     boolean    enabled;
  1150.     int        subItemIndex;
  1151.     } ButtonGroup_SetEnabled;
  1152.  
  1153. typedef struct buttongroup_subiteminfo
  1154.     {
  1155.     int         subItemIndex;
  1156.  
  1157.     char    *labelP;
  1158.     ULong   *iconTypeP;
  1159.     long    *iconIdP;
  1160.     IconRsc **iconPP;
  1161.     ULong   *commandNumberP;
  1162.     int        *commandSourceP;
  1163.     ULong   *valueP;
  1164.     ULong   *maskP;
  1165.     ULong   *arrayIndexP;
  1166.     ULong   *attributesP;
  1167.     void    *userDataP;
  1168.  
  1169.     boolean  redraw;
  1170.     } ButtonGroup_SubItemInfo;
  1171.  
  1172. /*----------------------------------------------------------------------+
  1173. |                                    |
  1174. |   Color Picker Item Auxiliary Messages                |
  1175. |                                    |
  1176. +----------------------------------------------------------------------*/
  1177. #define COLORPICKER_AUXMESSAGE_GETINFO        1
  1178. #define COLORPICKER_AUXMESSAGE_SETINFO        2
  1179.  
  1180. typedef struct colorpicker_iteminfo
  1181.     {
  1182.     ULong   *commandNumberP;
  1183.     ULong   *commandSourceP;
  1184.     ULong   *maskP;
  1185.     long    *textIdP;
  1186.     } ColorPicker_ItemInfo;
  1187.  
  1188. /*----------------------------------------------------------------------+
  1189. |                                    |
  1190. |   Icon Cmd Palette or Frame Auxiliary Messages            |
  1191. |                                    |
  1192. +----------------------------------------------------------------------*/
  1193. #define ICONCMD_AUXMESSAGE_CMDKEYEDIN        1
  1194. #define ICONCMD_AUXMESSAGE_GETPALETTESELECTION    2
  1195. #define ICONCMD_AUXMESSAGE_SETPALETTESELECTION    3
  1196. #define    ICONCMD_AUXMESSAGE_ADJUSTTOOLSETTINGS    4
  1197.  
  1198. #define ICONCMD_AUXMESSAGE_NITEMS        5
  1199. #define ICONCMD_AUXMESSAGE_GETITEMINFO        6
  1200. #define ICONCMD_AUXMESSAGE_SETITEMINFO        7
  1201.  
  1202. #define ICONCMD_AUXMESSAGE_SELECTICON        8
  1203. #define ICONCMD_AUXMESSAGE_NSUBITEMS        9
  1204. #define ICONCMD_AUXMESSAGE_SELECTICONSBYID    10
  1205.  
  1206. /* selection types */
  1207. #define ICONCMD_SELECTTYPE_OFF        0
  1208. #define ICONCMD_SELECTTYPE_SINGLESHOT    1
  1209. #define ICONCMD_SELECTTYPE_LOCKED       2
  1210.  
  1211. typedef struct iconcmd_cmdkeyedin
  1212.     {
  1213.     void    *iconCmdP;    /* <= NULL if didn't find command in item */
  1214.  
  1215.     DialogBox    *initiatingDb;
  1216.     ULong     commandNumber;
  1217.     char    *taskId;
  1218.     int         selectType;
  1219.     } IconCmd_CmdKeyedIn;
  1220.  
  1221. typedef struct iconcmd_paletteselection
  1222.     {
  1223.     int        currentItem;    /* <= currently selected or default item */
  1224.     long    paletteId;
  1225.     void    *ownerMD;
  1226.     } IconCmd_PaletteSelection;
  1227.  
  1228. typedef struct iconcmd_adjusttoolsettings
  1229.     {
  1230.     void    *frameIconCmdP;
  1231.     DialogItem    *frameDiP;
  1232.     void    *paletteIconCmdP;
  1233.     DialogItem    *paletteDiP;
  1234.     void    *iCmdItemIconCmdP;    /* Added for Draft */
  1235.     DialogItem    *iCmdItemDiP;            /* Added for Draft */
  1236.     char    *taskNameP;        /* Added for 5.5 */
  1237.     ULong       commandNumber;        /* Added for 5.5 */
  1238.     } IconCmd_AdjustToolSettings;
  1239.  
  1240. typedef struct iconcmdmessage
  1241.     {
  1242.     union
  1243.     {
  1244.     struct
  1245.         {
  1246.         int        nItems;        /* <= */
  1247.         int        subItemIndex;   /* => */
  1248.         } getNItems;
  1249.     struct
  1250.         {
  1251.         ULong   type;
  1252. #if defined (m68k)
  1253.         long    (id);
  1254. #else
  1255.         long    id;
  1256. #endif        
  1257.         int        subItemIndex;
  1258.         } itemInfo;
  1259.  
  1260.     /* added for 4.0.3 */
  1261.     struct
  1262.         {
  1263.         int        iconIndex;
  1264.         int        subIconIndex;    /* only for iconCmdFrames */
  1265.         int        selectType;
  1266.         boolean deselectOthers;
  1267.         boolean updateToolSettings;
  1268.         } selectIcon;
  1269.         struct
  1270.         {
  1271.         void    *iconCmdP;    /* <= NULL if didn't find command in item */
  1272.  
  1273.         long     iconId;
  1274.         void    *ownerMD;
  1275.         int         selectType;
  1276.         boolean  deselectOthers;
  1277.         } selectIconsById;
  1278.     } u;
  1279.     } IconCmdMessage;
  1280.  
  1281. /*----------------------------------------------------------------------+
  1282. |                                    |
  1283. |   Icon Editor Auxiliary Messages; Version 5.0 Addition        |
  1284. |                                    |
  1285. +----------------------------------------------------------------------*/
  1286. #define ICONEDITOR_AUXMESSAGE_GETINFO        1
  1287. #define ICONEDITOR_AUXMESSAGE_SETINFO        2
  1288. #define    ICONEDITOR_AUXMESSAGE_GETDRAWCOLOR  3
  1289. #define ICONEDITOR_AUXMESSAGE_SETDRAWCOLOR  4
  1290. #define ICONEDITOR_AUXMESSAGE_GETDRAWTOOL   5
  1291. #define ICONEDITOR_AUXMESSAGE_SETDRAWTOOL   6
  1292. #define    ICONEDITOR_AUXMESSAGE_DOOPERATION   7
  1293. #define ICONEDITOR_AUXMESSAGE_ISSELECTION   8
  1294. #define ICONEDITOR_AUXMESSAGE_CBISVALID        9
  1295.  
  1296. typedef struct iconeditormessage
  1297.     {
  1298.     union
  1299.     {
  1300.     struct
  1301.         {
  1302.         ULong   *attributesP;
  1303.         ULong   *widthP;
  1304.         ULong   *heightP;
  1305.         ULong   *fatBitsSizeP;
  1306.         long    *fgColorIndexP;
  1307.  
  1308.         boolean  redraw;
  1309.         } itemInfo;
  1310.     struct
  1311.         {
  1312.         int         drawColorIndex;        /* a fixed color index */
  1313.         } drawColor;
  1314.     struct
  1315.         {
  1316.         int         drawTool;            /* tool # */
  1317.         } drawTool;
  1318.     struct
  1319.         {
  1320.         char    *strResultP;
  1321.         int         result;
  1322.  
  1323.         Point2d    *downPixelP;
  1324.         Point2d    *upPixelP;
  1325.         int         drawColorIndex;
  1326.         int         drawTool;
  1327.         boolean     saveUndoState;
  1328.         } operation;
  1329.     struct
  1330.         {
  1331.         int         result;
  1332.         } query;
  1333.     } u;
  1334.     } IconEditorMessage;
  1335.  
  1336. /*----------------------------------------------------------------------+
  1337. |                                    |
  1338. |   Label Item Auxiliary Messages                    |
  1339. |                                    |
  1340. +----------------------------------------------------------------------*/
  1341. #define LABEL_AUXMESSAGE_SETATTRIBUTES    1
  1342.  
  1343. typedef struct labelmessage
  1344.     {
  1345.     union
  1346.     {
  1347.     struct
  1348.         {
  1349.         int    attributes;
  1350.         } attributes;
  1351.     } u;
  1352.     } LabelMessage;
  1353.  
  1354. /*----------------------------------------------------------------------+
  1355. |                                    |
  1356. |   Level Map Auxiliary Messages                    |
  1357. |                                    |
  1358. +----------------------------------------------------------------------*/
  1359. #define LEVELMAP_AUXMESSAGE_GETINFO        1
  1360. #define LEVELMAP_AUXMESSAGE_SETINFO        2
  1361.  
  1362. typedef struct levelmap_iteminfo
  1363.     {
  1364.     char    *activeLevelAccessStrP;
  1365.     } LevelMap_ItemInfo;
  1366.  
  1367. /*----------------------------------------------------------------------+
  1368. |                                    |
  1369. |   Level Picker Item Auxiliary Messages                |
  1370. |                                    |
  1371. +----------------------------------------------------------------------*/
  1372. #define LEVELPICKER_AUXMESSAGE_GETINFO        1
  1373. #define LEVELPICKER_AUXMESSAGE_SETINFO        2
  1374.  
  1375. typedef struct levelpicker_iteminfo
  1376.     {
  1377.     ULong   *commandNumberP;
  1378.     ULong   *commandSourceP;
  1379.     ULong   *maskP;
  1380.     long    *textIdP;
  1381.     } LevelPicker_ItemInfo;
  1382.  
  1383. /*----------------------------------------------------------------------+
  1384. |                                    |
  1385. |   List Item Auxiliary Messages (Obsolete, DO NOT USE)            |
  1386. |                                    |
  1387. +----------------------------------------------------------------------*/
  1388. #define LIST_AUXMESSAGE_SETCONTENTS    1
  1389. #define LIST_AUXMESSAGE_GETSELECTION    2
  1390. #define LIST_AUXMESSAGE_SETSELECTION    3
  1391. #define LIST_AUXMESSAGE_CLEARSELECTION    4
  1392.  
  1393. typedef struct list_setcontents
  1394.     {
  1395.     int        nRows;
  1396.     int        nColumns;
  1397.     char    **rowPtrs;
  1398.     } List_SetContents;
  1399.  
  1400. typedef struct list_selection
  1401.     {
  1402.     int        rowIndex;
  1403.     int        columnIndex;
  1404.     } List_Selection;
  1405.  
  1406. /*----------------------------------------------------------------------+
  1407. |                                    |
  1408. |   ListBox Item Auxiliary Messages                        |
  1409. |                                    |
  1410. +----------------------------------------------------------------------*/
  1411. #define LISTCELLATTR_HIGHLIGHT        0x01    /* cell is highlighted */
  1412. #define LISTCELLATTR_DISABLED        0x02    /* cell is unselectable */
  1413.  
  1414. #define LISTBOX_AUXMESSAGE_INIT            1
  1415. #define LISTBOX_AUXMESSAGE_GETSTRLISTP        2
  1416. #define LISTBOX_AUXMESSAGE_NROWSCHANGED        3
  1417. #define LISTBOX_AUXMESSAGE_GETDISPLAYRANGE  4
  1418. #define LISTBOX_AUXMESSAGE_SETTOPROW        5
  1419. #define LISTBOX_AUXMESSAGE_DRAWCONTENTS        6
  1420. #define LISTBOX_AUXMESSAGE_SELECTCELLS        7
  1421. #define LISTBOX_AUXMESSAGE_ENABLECELLS        8
  1422. #define LISTBOX_AUXMESSAGE_GETSELECTRANGE   9
  1423. #define LISTBOX_AUXMESSAGE_GETNEXTSELECTION 10
  1424. #define LISTBOX_AUXMESSAGE_CELLSELECTED     11
  1425. #define LISTBOX_AUXMESSAGE_CELLENABLED        12
  1426. #define LISTBOX_AUXMESSAGE_CLICKCELL        13
  1427. #define LISTBOX_AUXMESSAGE_SETATTRIBUTES    14
  1428.  
  1429. #define LISTBOX_AUXMESSAGE_GETINFO        15
  1430. #define LISTBOX_AUXMESSAGE_SETINFO        16
  1431.  
  1432. #define LISTBOX_AUXMESSAGE_NCOLUMNS        17
  1433. #define LISTBOX_AUXMESSAGE_INSERTCOLUMN        18
  1434. #define LISTBOX_AUXMESSAGE_DELETECOLUMN        19
  1435. #define LISTBOX_AUXMESSAGE_DELETEALL        20
  1436. #define LISTBOX_AUXMESSAGE_GETCOLINFO        21
  1437. #define LISTBOX_AUXMESSAGE_SETCOLINFO        22
  1438.  
  1439. #define LISTBOX_AUXMESSAGE_GETSELECTIONS    23
  1440. #define LISTBOX_AUXMESSAGE_SETSELECTIONS    24
  1441. #define LISTBOX_AUXMESSAGE_GETLOCATION        25
  1442. #define LISTBOX_AUXMESSAGE_SETLOCATION        26
  1443. #define LISTBOX_AUXMESSAGE_SETTOPROWREDRAW  27
  1444.  
  1445. typedef struct listboxmessage
  1446.     {
  1447.     union
  1448.     {
  1449.     struct
  1450.         {
  1451.         int        nColumns;    /* => should match # displayed cols */
  1452.         StringList    *strListP;   /* => 1st infoField used by ListBox */
  1453.         } init;
  1454.     struct
  1455.         {
  1456.         StringList    *strListP;        /* <= */
  1457.         } getStrListP;
  1458.     struct
  1459.         {
  1460.         int        minRowIndex;
  1461.         int        maxRowIndex;
  1462.         int        minColIndex;
  1463.         int        maxColIndex;
  1464.  
  1465.         boolean operation;
  1466.         boolean redraw;
  1467.         } range;
  1468.     struct
  1469.         {
  1470.         int        rowIndex;
  1471.         int        colIndex;
  1472.  
  1473.         boolean result;
  1474.         } cell;
  1475.     struct
  1476.         {
  1477.         boolean *foundP;        /* <= */
  1478.         int        *rowIndexP;        /* <> */
  1479.         int        *colIndexP;        /* <> */
  1480.         } getNextSelection;
  1481.     struct
  1482.         {
  1483.         long    attributes;        /* => */
  1484.         } setAttributes;
  1485.     struct
  1486.         {
  1487.         ULong   *attributesP;
  1488.         ULong   *nRowsP;
  1489.         ULong   *sizeNumColumnP;
  1490.         boolean  redraw;
  1491.         } itemInfo;
  1492.         struct
  1493.         {
  1494.         int         columnIndex;
  1495.         boolean     redraw;
  1496.  
  1497.         int        *widthP;        /* dialog coord units */
  1498.         int        *maxSizeP;
  1499.         ULong    *attributesP;
  1500.         char    *headingP;
  1501.         } columnInfo;
  1502.     struct
  1503.         {
  1504.         int        *nSelectionsP;
  1505.         Spoint2d    **selectionsPP;
  1506.         } getSelections;
  1507.     struct
  1508.         {
  1509.         int         nSelections;
  1510.         Spoint2d    *selectionsP;
  1511.         boolean     deselectAllFirst;
  1512.         boolean     redraw;
  1513.         } setSelections;
  1514.     struct
  1515.         {
  1516.         int         rowIndex;
  1517.         int         colIndex;
  1518.         } location;
  1519.     } u;
  1520.     } ListBoxMessage;
  1521.  
  1522. /*----------------------------------------------------------------------+
  1523. |                                    |
  1524. |   MenuBar Item Auxiliary Messages                    |
  1525. |                                    |
  1526. +----------------------------------------------------------------------*/
  1527. #define MENUBAR_AUXMESSAGE_GETITEMINFO    1
  1528. #define MENUBAR_AUXMESSAGE_SETITEMINFO    2
  1529. #define MENUBAR_AUXMESSAGE_NITEMS    3
  1530. #define MENUBAR_AUXMESSAGE_GETSELECTION    4
  1531. #define MENUBAR_AUXMESSAGE_FINDITEM    5
  1532. #define MENUBAR_AUXMESSAGE_GETITEM    6
  1533. #define MENUBAR_AUXMESSAGE_FINDMENU    7
  1534. #define MENUBAR_AUXMESSAGE_DELETEMENU    8
  1535. #define MENUBAR_AUXMESSAGE_INSERTMENU    9
  1536. #define MENUBAR_AUXMESSAGE_GETMENU    10
  1537. #define MENUBAR_AUXMESSAGE_NMENUS    11
  1538. #define MENUBAR_AUXMESSAGE_DELETEMENUS    12
  1539. #define MENUBAR_AUXMESSAGE_ACTIVATEACCEL 13
  1540. #define MENUBAR_AUXMESSAGE_INSERTMENU2    14    /* 4.0.2 fixed insert menu */
  1541. #define MENUBAR_AUXMESSAGE_DETACHMENU    15    /* 4.1.0.1 */
  1542. #define MENUBAR_AUXMESSAGE_ATTACHMENU    16    /* 4.1.0.1 */
  1543. #define MENUBAR_AUXMESSAGE_BUILDGENERIC    17    /* 4.2 */
  1544. #define MENUBAR_AUXMESSAGE_QUIETACTIVATE 18    /* 4.2 */
  1545. #define MENUBAR_AUXMESSAGE_MAINTAINMENUS 19    /* 4.2 */
  1546. #define MENUBAR_AUXMESSAGE_GETMENUEXTENT 20    /* 4.2 */
  1547. #define MENUBAR_AUXMESSAGE_FREEGENERIC   21    /* 4.2 */
  1548. #define MENUBAR_AUXMESSAGE_FINDITEMBYACCEL 22      /* MicroStation 95 */
  1549.  
  1550. typedef struct ditem_pulldownmenu
  1551.     {
  1552.     ULong    type;
  1553. #if defined (m68k)
  1554.     long    (id);
  1555. #else
  1556.     long    id;
  1557. #endif    
  1558.     RawItemHdr  *rawMenuP;
  1559.     } DItem_PulldownMenu;
  1560.  
  1561. typedef struct ditem_pulldownmenuitem
  1562.     {
  1563.     long         searchId;
  1564.     RawItemHdr        *rawItemP;
  1565.     DItem_PulldownMenu    *menuP;        /* set by pdmlib.mc */
  1566.     } DItem_PulldownMenuItem;
  1567.  
  1568. typedef struct menubar_selection
  1569.     {
  1570.     ULong   menuType;
  1571.     long    menuId;
  1572.     int        subItemIndex;
  1573.     long    searchId;
  1574.     } MenuBar_Selection;
  1575.  
  1576. typedef struct menubar_finditem
  1577.     {
  1578.     DItem_PulldownMenuItem  *menuItemP;        /* <= */
  1579.     DItem_PulldownMenu        *menuP;        /* <> */
  1580.  
  1581.     ULong   menuType;
  1582.     long    menuId;
  1583.     long    searchId;
  1584.     int        subItemIndex;
  1585.     } MenuBar_FindItem;
  1586.  
  1587. typedef struct menubar_finditembyaccel
  1588.     {
  1589.     DItem_PulldownMenuItem  *menuItemP;        /* <= */
  1590.     DItem_PulldownMenu        *menuP;        /* <> */
  1591.  
  1592.     ULong   menuType;
  1593.     long    menuId;
  1594.     long    accelerator;
  1595.     } MenuBar_FindItemByAccel;
  1596.  
  1597. typedef struct menubar_insertmenu
  1598.     {
  1599.     ULong   menuType;            /* => type of menu to insert */
  1600.     long    menuId;            /* => id of menu to insert */
  1601.  
  1602.     DItem_PulldownMenu    *beforeMenuP;        /* => insert before menu */
  1603.     void    *ownerMD;    /* => 4.0.2 md of task that owns menu that inserted */
  1604.     DItem_PulldownMenu    *insertedMenuP;        /* <= 4.0.2 inserted menu */
  1605.     } MenuBar_InsertMenu;
  1606.  
  1607. typedef struct menubar_detachmenu
  1608.     {
  1609.     DItem_PulldownMenu    *menuP;        /* => menu to detach */
  1610.     boolean             redraw;    /* => redraw menubar after detaching */
  1611.     } MenuBar_DetachMenu;        /* 4.2 version */
  1612.  
  1613. typedef struct menubar_buildgeneric
  1614.     {
  1615.     int        buildType;        /* 0=MBar 1=just one menu. */
  1616.     void    *genMBarP;        /* <= generic menubar data */
  1617.     void    *genMenuP;        /* <= If just one menu. */
  1618.     void    *pdmP;          /* => If just one menu. */
  1619.     } MenuBar_BuildGeneric;        /* 4.2 */
  1620.  
  1621. typedef struct menubar_quietactivate
  1622.     {
  1623.     DItem_PulldownMenu    *pdmP;
  1624.     int            currentItem;
  1625.     BSIRect        pdmRect;
  1626.     void        **pulledListPP;
  1627.     int            screen;
  1628.     } MenuBar_QuietActivate;        /* 4.2 */
  1629.  
  1630. typedef struct menubar_activateAccel
  1631.     {
  1632.     DialogItemMessage    *dimP; /* => initiating message (usually keystroke)*/
  1633.     DItem_PulldownMenuItem  *menuItemP;
  1634.     } MenuBar_ActivateAccel;
  1635.  
  1636. typedef struct textpdm_item        /* text pulldown menu item info */
  1637.     {
  1638.     DItem_PulldownMenu    submenu;
  1639.  
  1640.     byte     enabled;
  1641.     byte     mark;
  1642.     ULong    helpInfo;
  1643.     ULong    helpType;
  1644.     char    *helpTaskIdP;
  1645.     long     pulldownItemHookId;
  1646.     long     pulldownSearchId;
  1647.     ULong    commandNumber;
  1648.     char    *commandTaskIdP;
  1649.     char    *unparsedP;
  1650.  
  1651.     char    *labelP;
  1652.     ULong    accelerator;
  1653.     int         mnemonic;
  1654.     int         mneIndex;
  1655.     } TextPDM_Item;
  1656.  
  1657. typedef struct textpdm_itemmodify
  1658.     {
  1659.     ULong   submenu:1;
  1660.  
  1661.     ULong   enabled:1;
  1662.     ULong   mark:1;
  1663.     ULong   helpInfo:1;
  1664.     ULong   helpType:1;
  1665.     ULong   helpTaskIdP:1;
  1666.     ULong   pulldownItemHookId:1;
  1667.     ULong   pulldownSearchId:1;
  1668.     ULong   commandNumber:1;
  1669.     ULong   commandTaskIdP:1;
  1670.     ULong   unparsedP:1;
  1671.  
  1672.     ULong   labelP:1;
  1673.     ULong   acceleratorP:1;
  1674.     ULong   mnemonic:1;
  1675.     ULong   mneIndex:1;
  1676.  
  1677.     ULong   unused:1;
  1678.     } TextPDM_ItemModify;
  1679.  
  1680. /*----------------------------------------------------------------------+
  1681. |                                    |
  1682. |   Pulldown Menu Messages                        |
  1683. |                                    |
  1684. +----------------------------------------------------------------------*/
  1685. #define PDMENU_MESSAGE_LOAD        200 /* Obsolete, not used */
  1686. #define PDMENU_MESSAGE_FREE        201 /* Obsolete, not used */
  1687. #define PDMENU_MESSAGE_GETTITLERECT    202
  1688. #define PDMENU_MESSAGE_SETTITLERECT    203
  1689. #define PDMENU_MESSAGE_GETTITLE        204
  1690. #define PDMENU_MESSAGE_SETTITLE        205
  1691. #define PDMENU_MESSAGE_SETENABLED    206
  1692.  
  1693. #define PDMENU_MESSAGE_DISPLAY        207 /* before getMenuExtent */
  1694. #define PDMENU_MESSAGE_GETSUBMENU    208
  1695. #define PDMENU_MESSAGE_GETSUBMENURECT    209
  1696. #define PDMENU_MESSAGE_GETMENUEXTENT    210
  1697. #define PDMENU_MESSAGE_PULLDOWN        211
  1698. #define PDMENU_MESSAGE_DRAW        212
  1699. #define PDMENU_MESSAGE_WHICHITEM    213
  1700. #define PDMENU_MESSAGE_HIGHLIGHTITEM    214
  1701. #define PDMENU_MESSAGE_GETITEMSEARCHID    215
  1702. #define PDMENU_MESSAGE_ACTIVATEITEM    216
  1703.  
  1704. #define PDMENU_MESSAGE_SRCHMENUFORMENU    217
  1705. #define PDMENU_MESSAGE_SRCHMENUFORID    218
  1706. #define PDMENU_MESSAGE_GETITEM        219
  1707. #define PDMENU_MESSAGE_GETNITEMS    220
  1708. #define PDMENU_MESSAGE_DELETEITEM    221
  1709. #define PDMENU_MESSAGE_DELETEALL    222
  1710.  
  1711. #define PDMENU_MESSAGE_GETITEMINFO    223
  1712. #define PDMENU_MESSAGE_SETITEMINFO    224
  1713. #define PDMENU_MESSAGE_INSERTITEM    225
  1714.  
  1715. #define PDMENU_MESSAGE_DISPLAYHELP    226
  1716. #define PDMENU_MESSAGE_ACTIVATEACCEL    227
  1717. #define PDMENU_MESSAGE_GETITEMLABEL    228
  1718. #define PDMENU_MESSAGE_GETPARENT    229
  1719. #define PDMENU_MESSAGE_INSERTITEM2    230 /* 4.0.2 get back item */
  1720. #define PDMENU_MESSAGE_SETITEMINFO2    231 /* 4.0.2 pass ownerMD also */
  1721. #define PDMENU_MESSAGE_GETUSERDATAP    232 /* 4.1.0.1 */
  1722. #define PDMENU_MESSAGE_SETUSERDATAP    233 /* 4.1.0.1 */
  1723. #define PDMENU_MESSAGE_ATTACHDB        234 /* 4.2.0.x */
  1724.  
  1725. #define PDMENU_MESSAGE_CHECKHIGHLIGHT        235 /* 5.0 */
  1726. #define PDMENU_MESSAGE_CHECKENABLED        236 /* 5.0 */
  1727. #define PDMENU_MESSAGE_CHECKACTION        237 /* 5.0 */
  1728. #define PDMENU_MESSAGE_SRCHMENUFORMNEMONIC  238 /* 5.0 */
  1729. #define PDMENU_MESSAGE_GETMNEMONICS        239 /* 5.0 */
  1730. #define PDMENU_MESSAGE_GETOWNERMD        240 /* 5.0 */
  1731. #define PDMENU_MESSAGE_HIDE            241 /* 5.0; after popup wind closed */
  1732. #define PDMENU_MESSAGE_SRCHMENUFORACCEL    242     /* MicroStation 95 */
  1733.  
  1734. /*  for keeping track of currently "pulled" menus */
  1735. typedef struct ditem_pulledmenu
  1736.     {
  1737.     DItem_PulldownMenu    *menuP;
  1738.     DialogBox        *pulldownWindP;
  1739.  
  1740.     int             currentItem;
  1741.     ULong         inItemTime;
  1742.     BSIRect         globalRect;
  1743.     void        *motionFuncOffset;
  1744.     void        *motionFuncMD;
  1745.  
  1746.     boolean             justContainedMouse; /* only TRUE for 1 in list */
  1747.     int                 submenuItemIndex;    /* item of currently showing submenu */
  1748.     struct ditem_pulledmenu *nextP;
  1749.     } DItem_PulledMenu;
  1750.  
  1751. typedef struct pulldowntrackinginfo        /* sent to pulldown motion func */
  1752.     {
  1753.     int        *currentItemP;    /* <> */
  1754.     void    *rawMenuP;        /* => */
  1755.     Point2d  pt;        /* => local coords */
  1756.     } PulldownTrackingInfo;
  1757.  
  1758. typedef struct pulldownmenumessage
  1759.     {
  1760.     boolean         msgUnderstood;    /* <= message understood? */
  1761.     int             messageType;    /* => message type */
  1762.     DItem_PulldownMenu    *menuP;
  1763.     union
  1764.     {
  1765.     struct
  1766.         {
  1767.         boolean         loadFailed;    /* <= set TRUE if error */
  1768.         void        *rawMenuP;    /* <= created menu */
  1769.         DialogBox        *db;        /* => owning dialog */
  1770.         void        *ownerMD;    /* => */
  1771.         DItem_PulldownMenu    *parentMenuP;    /* => parent menu */
  1772.         int             parentItemIndex; /* => index of parentitem */
  1773.         RawItemHdr        *mbarP;        /* => 5.0 */
  1774.         } load;
  1775.     struct
  1776.         {
  1777.         BSIRect    *rectP;
  1778.         } rect;
  1779.     struct
  1780.         {
  1781.         int         mneIndex;    /* <= only valid for GETTITLE */
  1782.         boolean     alignRight;    /* <= only valid for GETTITLE */
  1783.         boolean     enabled;    /* <= only valid for GETTITLE */
  1784.         char    *titleP;    /* <= (=> for SETTITLE) */
  1785.         int         mnemonic;    /* <= 5.0; only valid for GETTTILE */
  1786.         } title;
  1787.     struct
  1788.         {
  1789.         boolean    enabled;    /* => */
  1790.         } setEnabled;
  1791.     struct
  1792.         {
  1793.         RawItemHdr    *mbarP;        /* => used to construct draw msg */
  1794.         } display;
  1795.     struct
  1796.         {
  1797.         void    (*motionFunc)();    /* <= */
  1798.         DialogBox    *pulldownDb;        /* => */
  1799.         } pulldown;
  1800.     struct
  1801.         {
  1802.         int         itemIndex;    /* <= itemIndex of item cursor in */
  1803.         boolean     hasSubmenu;    /* <= item has submenu */
  1804.         Point2d    *ptP;        /* => cursor location, local coords */
  1805.         boolean     enabled;    /* <= item is enabled; 5.0 */
  1806.         } whichItem;
  1807.     struct
  1808.         {
  1809.         int         itemIndex;    /* => item to highlight */
  1810.         boolean     highlightOn;    /* => FALSE means turn highlight off*/
  1811.         } highlightItem;
  1812.     struct
  1813.         {
  1814.         DItem_PulldownMenu    *submenuP;    /* <= submenu */
  1815.         int             itemIndex;    /* => submenu to get */
  1816.         } getSubmenu;
  1817.     struct
  1818.         {
  1819.         int             screen;    /* <= screen to display on */
  1820.         BSIRect        *rectP;    /* <= submenu rect (global coords) */
  1821.         int             itemIndex;    /* => submenu rect to get */
  1822.         } getSubmenuRect;
  1823.     struct
  1824.         {
  1825.         long     searchId;    /* <= item's search id */
  1826.         int         itemIndex;    /* => item whose search id to get */
  1827.         } getItemSearchId;
  1828.     struct
  1829.         {
  1830.         int             itemIndex;    /* => item to activate */
  1831.         long         searchId;    /* => just passed to hook */
  1832.         DialogItemMessage    *dimP;        /* => hooks can ignore */
  1833.         } activateItem;
  1834.  
  1835.     struct
  1836.         {
  1837.         DItem_PulldownMenu *menuP;        /* <= found menu */
  1838.         ULong        menuType;    /* => */
  1839.         long        menuId;        /* => */
  1840.         } searchMenuForMenu;
  1841.     struct
  1842.         {
  1843.         DItem_PulldownMenuItem *menuItemP;        /* <= found menu item */
  1844.         long            searchId;        /* => */
  1845.         } searchMenuForId;
  1846.     struct
  1847.         {
  1848.         DItem_PulldownMenuItem *menuItemP;        /* <= found menu item */
  1849.         int                subItemIndex;    /* => */
  1850.         } getItem;
  1851.     struct
  1852.         {
  1853.         int                nItems;        /* <= */
  1854.         } getNItems;
  1855.     struct
  1856.         {
  1857.         DItem_PulldownMenuItem  *menuItemP;        /* => item to delete */
  1858.         } deleteItem;
  1859.  
  1860.     struct
  1861.         {
  1862.         void            *itemInfoP;
  1863.         void            *itemModifyP;
  1864.         DItem_PulldownMenuItem  *menuItemP;        /* => found */
  1865.         DItem_PulldownMenuItem  *newMenuItemP; /* => 4.0.2newly ins item*/
  1866.         void            *ownerMD; /* => 4.0.2 task setting info */
  1867.         } itemInfo;
  1868.     struct
  1869.         {
  1870.         int    itemIndex;    /* => item to display help on */
  1871.         } displayHelp;
  1872.     struct
  1873.         {
  1874.         DItem_PulldownMenuItem  *menuItemP;        /* => found */
  1875.         int             itemIndex;    /* => just passed to hook */
  1876.         long         searchId;    /* => just passed to hook */
  1877.         DialogItemMessage    *dimP;        /* => hooks can ignore */
  1878.         } activateAccel;
  1879.     struct
  1880.         {
  1881.         char            *labelP;        /* <= */
  1882.         DItem_PulldownMenuItem  *menuItemP;        /* =>  */
  1883.         } getItemLabel;
  1884.     struct
  1885.         {
  1886.         DItem_PulldownMenu    *parentMenuP;        /* <= */
  1887.         } getParent;
  1888.     struct
  1889.         {
  1890.         DItem_PulldownMenuItem  *menuItemP;
  1891.         void            *userDataP;
  1892.         } userDataP;
  1893.         struct
  1894.         {
  1895.         DialogBox    *db;
  1896.         } attachDb;
  1897.     struct
  1898.         {
  1899.         boolean     highlightAllowed;  /* => TRUE means item highlightable */
  1900.         int         itemIndex;        /* => item to check */
  1901.         } checkHighlight;
  1902.     struct
  1903.         {
  1904.         int        itemIndex;        /* <= found menu item index */
  1905.         long    mnemonic;        /* => mnemonic to search for */
  1906.         int        startItemIndex; /* => item to start search after */
  1907.         } searchMenuForMnemonic;    /* 5.0 */
  1908.     struct
  1909.         {
  1910.         int        *mnemonicsP;    /* <= array of mnemonic chars */
  1911.         char       **labelsPP;    /* <= array ptrs to actual labels */
  1912.         int        *mneIndicesP;    /* <= array of mnemonic indices */
  1913.         int        nMnemonics;    /* <= # of mnemonics */
  1914.         int        maxNMnemonics;    /* => max # of mnemonics returnable (50) */
  1915.         boolean    allLabels;    /* => TRUE means return all labels */
  1916.         } getMnemonics;        /* 5.0 */
  1917.     struct
  1918.         {
  1919.         void    *ownerMD;    /* <= owner MD of menu */
  1920.         } getOwnerMD;
  1921.     struct
  1922.         {
  1923.         DItem_PulldownMenuItem *menuItemP;        /* <= found menu item */
  1924.         long            accelerator;        /* => */
  1925.         } searchMenuForAccel;
  1926.     } u;
  1927.     } PulldownMenuMessage;
  1928.  
  1929. /*----------------------------------------------------------------------+
  1930. |                                        |
  1931. |   Basic Program Editor Auxiliary Messages                    |
  1932. |                                    |
  1933. +----------------------------------------------------------------------*/
  1934. #define BPE_AUXMESSAGE_GETTEXTLEN        1
  1935. #define BPE_AUXMESSAGE_GETTEXT           2
  1936. #define BPE_AUXMESSAGE_GETBREAKLEN       3
  1937. #define BPE_AUXMESSAGE_GETBREAK          4
  1938. #define BPE_AUXMESSAGE_GETFIRSTROWNUM    5
  1939. #define BPE_AUXMESSAGE_GETINFO           6
  1940. #define BPE_AUXMESSAGE_SETINFO           7
  1941. #define BPE_AUXMESSAGE_GETCURSOR         8
  1942. #define BPE_AUXMESSAGE_SETCURSOR         9
  1943. #define BPE_AUXMESSAGE_FLIPBREAK        10
  1944. #define BPE_AUXMESSAGE_NEWSELECTION     11
  1945. #define BPE_AUXMESSAGE_SETLINETYPE      12
  1946. #define BPE_AUXMESSAGE_GETLINETYPE      13
  1947. #define BPE_AUXMESSAGE_SETMODIFIEDFLAG  14
  1948. #define BPE_AUXMESSAGE_ISMODIFIED       15
  1949. #define BPE_AUXMESSAGE_INSERTSTRING     16
  1950. #define BPE_AUXMESSAGE_DOACCELERATOR    17
  1951. #define BPE_AUXMESSAGE_SEARCHTEXT    18
  1952.  
  1953. #define BPE_LINEATTRIB_NORMAL        0x0
  1954. #define BPE_LINEATTRIB_STEP            0x1
  1955. #define BPE_LINEATTRIB_BREAK        0x2
  1956.  
  1957. typedef struct bpe_linetype
  1958.     {
  1959.     int iLine;
  1960.     int iAttributeMask;
  1961.     } BPE_LineType;
  1962.  
  1963. typedef struct bpe_cursorpos
  1964.     {
  1965.     int iIndex;
  1966.     int iLine;
  1967.     } BPE_CursorPos;
  1968.  
  1969. typedef struct bpe_buffer
  1970.     {
  1971.     int     iLen;
  1972.     void    *bufferP;
  1973.     } BPE_Buffer;
  1974.  
  1975. typedef struct bpe_search
  1976.     {
  1977.     BoolInt caseSensitive;
  1978.     BoolInt isFound;          /* TRUE - text was found */
  1979.     BoolInt isFindAndReplace; /* TRUE - find and replace, FALSE - find */
  1980.     BoolInt isFoundHighlighted;/* TRUE - select the found text */
  1981.     BoolInt isForwardDir;      /* TRUE - search in forward direction */    
  1982.     int     replaceOption;    /* prompt, single, all (no prompt) */
  1983.     char    find[256];
  1984.     char    replaceWith[256];
  1985.     } BPE_SearchText;
  1986.  
  1987. /*----------------------------------------------------------------------+
  1988. |                                    |
  1989. |   Multiline Text Item Auxiliary Messages                |
  1990. |                                    |
  1991. +----------------------------------------------------------------------*/
  1992. #define MLTEXT_AUXMESSAGE_GETINFO        1
  1993. #define MLTEXT_AUXMESSAGE_SETINFO        2
  1994. #define MLTEXT_AUXMESSAGE_GETBASICTEXT        3
  1995. #define MLTEXT_AUXMESSAGE_GETCURSOR        4
  1996. #define MLTEXT_AUXMESSAGE_SETCURSOR        5
  1997. #define MLTEXT_AUXMESSAGE_TOPROWNUMBER      6
  1998. #define MLTEXT_AUXMESSAGE_GET_LINE_RANGE    7
  1999. #define MLTEXT_AUXMESSAGE_INSERT_STRING     8
  2000. #define MLTEXT_AUXMESSAGE_GET_LINE_COORDS       9
  2001.  
  2002. typedef struct mltext_iteminfo
  2003.     {
  2004.     ULong   *attributesP;
  2005.     long    *displayRowsP;
  2006.     long    *labelAboveP;
  2007.     boolean  redraw;
  2008.     } MlText_ItemInfo;
  2009.  
  2010. typedef struct mltext_itemCursor
  2011.     {
  2012.     int         lineNumber;
  2013.     long     cursorByteIndex;
  2014.     boolean  forceVisible;
  2015.     } MlText_ItemCursor;
  2016.  
  2017. typedef struct mltext_LineRange
  2018.     {
  2019.     int         lineNumber;
  2020.     long     startCharPos;
  2021.     long     endCharPos;
  2022.     } MlText_LineRange;
  2023.  
  2024. typedef struct mltext_insertString
  2025.     {
  2026.     char    *stringP;
  2027.     long     offset;
  2028.     long     charsToReplace;
  2029.     } MlText_insertString;
  2030.     
  2031. typedef struct mltext_LineCoords
  2032.     {
  2033.     long     offset;
  2034.     int         lineNumber;
  2035.     } MlText_LineCoords;
  2036.  
  2037.  
  2038. /*----------------------------------------------------------------------+
  2039. |                                    |
  2040. |   Option Button Item Auxiliary Messages                |
  2041. |                                    |
  2042. +----------------------------------------------------------------------*/
  2043. #define OPTIONBUTTON_AUXMESSAGE_SETENABLED     1
  2044. #define OPTIONBUTTON_AUXMESSAGE_GETITEM        2
  2045. #define OPTIONBUTTON_AUXMESSAGE_SETITEM        3
  2046. #define OPTIONBUTTON_AUXMESSAGE_NITEMS        4
  2047. #define OPTIONBUTTON_AUXMESSAGE_INSERTITEM    5
  2048. #define OPTIONBUTTON_AUXMESSAGE_DELETEITEM    6
  2049. #define OPTIONBUTTON_AUXMESSAGE_DELETEALL    7
  2050.  
  2051. #define OPTIONBUTTON_AUXMESSAGE_GETSUBINFO    8
  2052. #define OPTIONBUTTON_AUXMESSAGE_SETSUBINFO    9
  2053. #define OPTIONBUTTON_AUXMESSAGE_INSERTSUBITEM    10
  2054.  
  2055. typedef struct optionbutton_setenabled
  2056.     {
  2057.     boolean    enabled;
  2058.     int        subItemIndex;
  2059.     } OptionButton_SetEnabled;
  2060.  
  2061. typedef struct optionbutton_iteminfo        /* obsolete do not use (forgot cmd#) */
  2062.     {
  2063.     int         subItemIndex;
  2064.  
  2065.     char    *labelP;
  2066.     ULong   *iconTypeP;
  2067.     long    *iconIdP;
  2068.     int        *commandSourceP;
  2069.     ULong   *valueP;
  2070.     ULong   *maskP;
  2071.     int        *enabledP;
  2072.     void    *userDataP;
  2073.     } OptionButton_ItemInfo;
  2074.  
  2075. typedef struct optionbutton_subiteminfo
  2076.     {        /* CAUTION: first part must match ItemInfo */
  2077.     int         subItemIndex;
  2078.  
  2079.     char    *labelP;
  2080.     ULong   *iconTypeP;
  2081.     long    *iconIdP;
  2082.     int        *commandSourceP;
  2083.     ULong   *valueP;
  2084.     ULong   *maskP;
  2085.     int        *enabledP;
  2086.     void    *userDataP;
  2087.  
  2088.     ULong   *commandNumberP;
  2089.     } OptionButton_SubItemInfo;
  2090.  
  2091. /*----------------------------------------------------------------------+
  2092. |                                    |
  2093. |   Popup Menu Item Auxiliary Messages                    |
  2094. |                                    |
  2095. +----------------------------------------------------------------------*/
  2096. #define POPUPMENU_AUXMESSAGE_SETENABLED     1
  2097.  
  2098. typedef struct popupmenu_setenabled
  2099.     {
  2100.     boolean    enabled;
  2101.     int        subItemIndex;
  2102.     } PopupMenu_SetEnabled;
  2103.  
  2104. /*----------------------------------------------------------------------+
  2105. |                                    |
  2106. |   Push Button Item Auxiliary Messages                    |
  2107. |                                    |
  2108. +----------------------------------------------------------------------*/
  2109. #define PUSHBUTTON_AUXMESSAGE_SETDEFAULT    1
  2110. #define PUSHBUTTON_AUXMESSAGE_SETCANCEL        2
  2111. #define PUSHBUTTON_AUXMESSAGE_GETINFO        3
  2112. #define PUSHBUTTON_AUXMESSAGE_SETINFO        4
  2113.  
  2114. typedef struct pushbutton_setdefault
  2115.     {
  2116.     boolean isDefault;
  2117.     } PushButton_SetDefault;
  2118.  
  2119. typedef struct pushbutton_iteminfo
  2120.     {
  2121.     ULong   *commandNumberP;
  2122.     ULong   *commandSourceP;
  2123.     char    **unparsedPP;
  2124.     int        *buttonTypeP;
  2125.     boolean  redraw;
  2126.     } PushButton_ItemInfo;
  2127.  
  2128. /*----------------------------------------------------------------------+
  2129. |                                    |
  2130. |   Radio Button Item Auxiliary Messages; Version 5.0 Addition        |
  2131. |                                    |
  2132. +----------------------------------------------------------------------*/
  2133. #define RADIOBUTTON_AUXMESSAGE_GETINFO        1
  2134. #define RADIOBUTTON_AUXMESSAGE_SETINFO        2
  2135.  
  2136. typedef struct radiobutton_iteminfo
  2137.     {
  2138.     ULong   *commandNumberP;
  2139.     ULong   *commandSourceP;
  2140.     ULong   *valueP;
  2141.     ULong   *maskP;
  2142.     long    *radioButtonListIdP;
  2143.     } RadioButton_ItemInfo;
  2144.  
  2145. /*----------------------------------------------------------------------+
  2146. |                                    |
  2147. |   Sash Item Auxiliary Messages; Version 5.0 Addition            |
  2148. |                                    |
  2149. +----------------------------------------------------------------------*/
  2150. #define SASH_AUXMESSAGE_GETINFO        1
  2151. #define SASH_AUXMESSAGE_SETINFO        2
  2152.  
  2153. typedef struct sash_iteminfo
  2154.     {
  2155.     int       *topMarginP;
  2156.     int       *bottomMarginP;
  2157.     } Sash_ItemInfo;
  2158.  
  2159. typedef struct sash_buttonupauxinfo
  2160.     {
  2161.     int    oldYPos;    /* of itemRect.origin.y */
  2162.     int    newYPos;
  2163.     } Sash_ButtonUpAuxInfo;
  2164.  
  2165. /*----------------------------------------------------------------------+
  2166. |                                    |
  2167. |   Scale Item Auxiliary Messages; Version 5.0 Addition            |
  2168. |                                    |
  2169. +----------------------------------------------------------------------*/
  2170. #define SCALE_AUXMESSAGE_GETINFO        1
  2171. #define SCALE_AUXMESSAGE_SETINFO        2
  2172.  
  2173. #define SCALE_AUXMESSAGE_FORMATVALUE        50
  2174.  
  2175. typedef struct scale_iteminfo
  2176.     {
  2177.     double    *minValueP;
  2178.     double    *maxValueP;
  2179.     double    *incAmountP;
  2180.     double    *pageIncAmountP;
  2181.     long      *associatedTextIdP;
  2182.     char      *minLabel;
  2183.     char      *maxLabel;
  2184.     BoolInt   *isVerticalP;
  2185.     BoolInt   *showValueP;
  2186.     BoolInt   *hasArrowsP;
  2187.     BoolInt   *limitsOnSideP;
  2188.     char      *formatToDisplay;    
  2189.     BoolInt   redraw;
  2190.     } Scale_ItemInfo;
  2191.  
  2192.  
  2193. typedef struct scale_formatvalue
  2194.     {
  2195.     boolean  hookHandled;   /* <= must set TRUE if formated value */
  2196.     char    *valueStrP;        /* <= max 40 chars including trailing NULL */
  2197.  
  2198.     double   value;        /* => value to format */
  2199.     } Scale_FormatValue;
  2200.  
  2201. typedef struct scale_motionfuncarg
  2202.     {
  2203.     double    value;        /* => scale value */
  2204.     BSIRect    sliderRect; /* => current slider rect */
  2205.     } Scale_MotionFuncArg;
  2206.  
  2207. /*----------------------------------------------------------------------+
  2208. |                                    |
  2209. |   Scroll Bar Item Auxiliary Messages                    |
  2210. |                                    |
  2211. +----------------------------------------------------------------------*/
  2212. #define SCROLLBAR_AUXMESSAGE_SETRANGE        1
  2213. #define SCROLLBAR_AUXMESSAGE_GETINFO        2
  2214. #define SCROLLBAR_AUXMESSAGE_SETINFO        3
  2215.  
  2216. typedef struct scrollbar_setrange
  2217.     {
  2218.     double  sliderSize;
  2219.     int        minValue;
  2220.     int        maxValue;
  2221.     int        incAmount;
  2222.     int        pageIncAmount;
  2223.     } ScrollBar_SetRange;
  2224.  
  2225. typedef struct scrollbar_iteminfo
  2226.     {
  2227.     long    *minValueP;
  2228.     long    *maxValueP;
  2229.     long    *incAmountP;
  2230.     long    *pageIncAmountP;
  2231.     double  *sliderSizeP;
  2232.     boolean *isVerticalP;
  2233.     boolean  redraw;
  2234.     } ScrollBar_ItemInfo;
  2235.  
  2236.  
  2237. /*----------------------------------------------------------------------+
  2238. |                                    |
  2239. |   Text Item Auxiliary Messages                    |
  2240. |                                    |
  2241. *+----------------------------------------------------------------------*/
  2242. #define TEXT_AUXMESSAGE_GETRANGE    1
  2243. #define TEXT_AUXMESSAGE_SETRANGE    2
  2244. #define TEXT_AUXMESSAGE_GETBASICTEXT    3
  2245. #define TEXT_AUXMESSAGE_GETINFO        4
  2246. #define TEXT_AUXMESSAGE_SETINFO        5
  2247.  
  2248. typedef struct text_range
  2249.     {
  2250.     char   *minimumP;        /* minimum value */
  2251.     char   *maximumP;        /* maximum value */
  2252.     } Text_Range;
  2253.  
  2254. typedef struct text_getbasictext
  2255.     {
  2256.     void    *basicTextP;
  2257.     } Text_GetBasicText;
  2258.  
  2259. typedef struct text_iteminfo
  2260.     {
  2261.     ULong   *commandNumberP;
  2262.     ULong   *commandSourceP;
  2263.     int        *maxSizeP;
  2264.     char    *formatToDisplayP;
  2265.     char    *formatToInternalP;
  2266.     char    *minimumP;
  2267.     char    *maximumP;
  2268.     ULong   *maskP;
  2269.     UShort  *attributesP;
  2270.     long    *labelAboveP;
  2271.     boolean  redraw;
  2272.     } Text_ItemInfo;
  2273.  
  2274. /*----------------------------------------------------------------------+
  2275. |                                    |
  2276. |   Toggle Button Item Auxiliary Messages                |
  2277. |                                    |
  2278. +----------------------------------------------------------------------*/
  2279. #define TOGGLEBUTTON_AUXMESSAGE_GETINFO        1
  2280. #define TOGGLEBUTTON_AUXMESSAGE_SETINFO        2
  2281.  
  2282. typedef struct togglebutton_iteminfo
  2283.     {
  2284.     ULong   *commandNumberP;
  2285.     ULong   *commandSourceP;
  2286.     ULong   *maskP;
  2287.     int        *invertP;
  2288.     } ToggleButton_ItemInfo;
  2289.  
  2290. /*----------------------------------------------------------------------+
  2291. |                                    |
  2292. |   Aux Dialog Handler Structures                    |
  2293. |                                    |
  2294. +----------------------------------------------------------------------*/
  2295. /*----------------------------------------------------------------------+
  2296. |                                    |
  2297. |   Aux Handler Types                            |
  2298. |                                    |
  2299. +----------------------------------------------------------------------*/
  2300. #define AUXHANDLER_VKEYTRAN    0x764B6579        /*  'vKey'  */
  2301. #define AUXHANDLER_DATABASE    0x44426168        /*  'DBah' DataBaseAuxHand */
  2302.  
  2303. /*----------------------------------------------------------------------+
  2304. |                                    |
  2305. |   Mdl Aux Handler Structure                        |
  2306. |                                    |
  2307. +----------------------------------------------------------------------*/
  2308. typedef struct mdlauxhandler
  2309.     {
  2310.     ULong        handlerType;
  2311.     void       *handlerMD;
  2312.     long        handlerOffset;
  2313.     char        name[20];
  2314.     VersionNumber   version;
  2315.     } MdlAuxHandler;
  2316.  
  2317. typedef struct auxhandlermessage
  2318.     {
  2319.     boolean     msgUnderstood;        /* <= message understood? */
  2320.     ULong     handlerType;
  2321.     void    *messageP;
  2322.     } AuxHandlerMessage;
  2323.  
  2324. /*----------------------------------------------------------------------+
  2325. |                                    |
  2326. |   Virtual Key Tranlator Messages                    |
  2327. |                                    |
  2328. +----------------------------------------------------------------------*/
  2329. #define VKEYTRAN_MESSAGE_TRANSRAWKEY        1    /* raw -> virtual */
  2330. #define VKEYTRAN_MESSAGE_GETPRINTSTR        2
  2331. #define VKEYTRAN_MESSAGE_LOADACCELTABLE        3
  2332. #define    VKEYTRAN_MESSAGE_FREEACCELTABLE        4
  2333. #define VKEYTRAN_MESSAGE_GETACCELERATOR        5    /* virtual -> command */
  2334. #define VKEYTRAN_MESSAGE_GETSYSTABLE        6
  2335. #define VKEYTRAN_MESSAGE_ADDACCELERATOR        7
  2336. #define VKEYTRAN_MESSAGE_REMOVEACCELERATOR  8
  2337. #define    VKEYTRAN_MESSAGE_SHOWACCELTABLE        9
  2338. #define VKEYTRAN_MESSAGE_GETSHIFTSTATE        10
  2339.  
  2340. typedef struct vkeytranmessage
  2341.     {
  2342.     int        messageType;    /* => message type */
  2343.  
  2344.     union
  2345.     {
  2346.     struct
  2347.         {
  2348.         int    virtualKeyCode;        /* <= */
  2349.         int    qualifierMask;        /* <> */
  2350.  
  2351.         int rawKeyCode;        /* => */
  2352.         } translateRawKey;
  2353.     struct
  2354.         {
  2355.         char    *printableStrP;    /* <= */
  2356.         int         virtualKeyCode;    /* => */
  2357.         } getPrintStr;
  2358.     struct
  2359.         {
  2360.         AccelKeyTable   *akTableP;    /* <= */
  2361.  
  2362.         RscFileHandle   rscFileH;    /* => */
  2363.         int            resourceId;    /* => */
  2364.         void       *ownerMD;    /* => */
  2365.         } loadAccelTable;
  2366.         struct
  2367.         {
  2368.         AccelKeyTable   *akTableP;    /* => */
  2369.         } freeAcceleratorTable;
  2370.         struct
  2371.         {
  2372.         ULong    commandNumber;    /* <= */
  2373.         char    *unparsedP;        /* <= */
  2374.         char    *commandTaskIdP;    /* <= */
  2375.         DItem_PulldownMenuItem  *menuItemP;    /* <=NULL from system table */
  2376.  
  2377.         AccelKeyTable   *akTableP;        /* => */
  2378.         int             virtualKeyCode;    /* => */
  2379.         int             rawKeyCode;    /* => */
  2380.         int             qualifierMask;    /* => */
  2381.         boolean         searchSystemTable;    /* => */
  2382.         } getAccelerator;
  2383.     struct
  2384.         {
  2385.         AccelKeyTable   **systemAKTablePP;    /* <= */
  2386.         } getSystemAKTablePP;
  2387.     struct
  2388.         {
  2389.         AccelKeyTable   **akTablePP;    /* => */
  2390.         int         virtualKeyCode;    /* => */
  2391.         int         rawKeyCode;    /* => */
  2392.         ULong    commandNumber;    /* => */
  2393.         char    *unparsedP;        /* => */
  2394.         char    *commandTaskIdP;    /* => */
  2395.  
  2396.         ULong    menuType;        /* => */
  2397.         long     menuId;        /* => */
  2398.         void    *rawMenuP;        /* => */
  2399.         long     searchId;        /* => */
  2400.         void    *rawItemP;        /* => */
  2401.         } addAccelerator;
  2402.     struct
  2403.         {
  2404.         AccelKeyTable   *akTableP;        /* => */
  2405.         int             virtualKeyCode;    /* => */
  2406.         int             rawKeyCode;    /* => */
  2407.         } removeAccelerator;
  2408.     struct
  2409.         {
  2410.         AccelKeyTable   *akTableP;    /* => */
  2411.         } showAcceleratorTable;
  2412.     struct
  2413.         {
  2414.         boolean shift;        /* <= */
  2415.         boolean control;        /* <= */
  2416.         boolean alt;        /* <= */
  2417.         boolean numLock;        /* <= */
  2418.         } getShiftState;
  2419.     } u;
  2420.     } VKeyTranMessage;
  2421.  
  2422. /*----------------------------------------------------------------------+
  2423. |                                    |
  2424. |   DataBase Aux Handler Messages                    |
  2425. |                                    |
  2426. +----------------------------------------------------------------------*/
  2427. #define DATABASE_MESSAGE_ITEM        1    /* sends an item message  */
  2428. #define DATABASE_MESSAGE_DIALOG        2    /* sends a dialog message */
  2429.  
  2430. typedef struct databasemessage
  2431.     {
  2432.     int        messageType;    /* => message type (DIALOG or ITEM)*/
  2433.  
  2434.     union
  2435.     {
  2436.     struct
  2437.         {
  2438.         int                itemType;    /* => item's Resource Type */
  2439.  
  2440.         DialogItemMessage    *dimP;      /* => */
  2441.         } itemMsg;
  2442.     struct
  2443.         {
  2444.         DialogMessage   *dmP;    /* => */
  2445.         
  2446.         union
  2447.             {
  2448.             struct
  2449.             {
  2450.             char    *queryStrP;         /* => DataBase query statement */
  2451.             char    *primaryTableName;
  2452.             BoolInt  executeQuery;
  2453.             ULong        options;
  2454.             }dmCreate;
  2455.         struct
  2456.             {
  2457.             char   *unusedP;            /* => Next version */
  2458.             
  2459.             }dmInit;
  2460.             }dmu;
  2461.         } dialogMsg;
  2462.     struct
  2463.         {
  2464.         int   reserved1;    /* => */
  2465.         int      reserved2;    /* => */
  2466.         int      reserved3;    /* => */
  2467.         int   reserved4;    /* => */
  2468.         int   reserved5;    /* => */
  2469.         int   reserved6;    /* => */
  2470.  
  2471.         int   reserved7;       /* => */
  2472.         int   reserved8;    /* => */
  2473.         int   reserved9;    /* => */
  2474.         int   reserved10;    /* => */
  2475.         int   reserved11;    /* => */
  2476.         int   reserved12;    /* => */
  2477.  
  2478.         } padUnionTo48;
  2479.     } u;
  2480.     } DataBaseMessage;
  2481.  
  2482. #endif    /* !defined (resource) */
  2483.  
  2484. /*----------------------------------------------------------------------+
  2485. |                                    |
  2486. |   Dialog Filter Messages                        |
  2487. |                                    |
  2488. |   Sent to dialogFilters.                        |
  2489. |                                    |
  2490. +----------------------------------------------------------------------*/
  2491. #define MESSAGE_CLASS_DIALOG        1    /* dialog hook message */
  2492. #define MESSAGE_CLASS_ITEM        2    /* dialog item hook message */
  2493. #define MESSAGE_CLASS_HANDLER        3    /* item handler message */
  2494. #define MESSAGE_CLASS_SYSTEM        4    /* special dialog man message */
  2495. #define MESSAGE_CLASS_EDITOR        5    /* editor message */
  2496. #define MESSAGE_CLASS_PULLDOWNMENU  6    /* pulldown menu message */
  2497. #define MESSAGE_CLASS_CODESET        7    /* codeset handler messages */
  2498. #define MESSAGE_CLASS_AUXHANDLER    8    /* aux handler message */
  2499.  
  2500. /*----------------------------------------------------------------------+
  2501. |                                    |
  2502. |   Dialog Filter Message Structures                    |
  2503. |                                    |
  2504. +----------------------------------------------------------------------*/
  2505. #if !defined (resource)
  2506. typedef struct dialogfiltermessage
  2507.     {
  2508.     int            messageClass;    /* => message class */
  2509.     void       *currentMD;        /* => current MDL descriptor */
  2510.     char       *taskIdP;        /* => current task id (name) */
  2511.     boolean        beforeHook;        /* => TRUE if before hook called */
  2512.     boolean        hookActuallyCalled;    /* => only if post message */
  2513.     boolean        stopMessage;    /* <= prevent msg processing */
  2514.     union
  2515.     {
  2516.     DialogMessage        dMsg;    /* do not modify */
  2517.     DialogItemMessage   diMsg;    /* do not modify */
  2518.     DialogSystemMessage dsMsg;
  2519.     DialogEditorMessage deMsg;
  2520.     PulldownMenuMessage pdmMsg;
  2521.     AuxHandlerMessage   ahMsg;
  2522.     } original;
  2523.     union
  2524.     {
  2525.     DialogMessage        *dmP;
  2526.     DialogItemMessage   *dimP;
  2527.     DialogSystemMessage *dsmP;
  2528.     DialogEditorMessage *demP;
  2529.     PulldownMenuMessage *pdmmP;
  2530.     AuxHandlerMessage   *ahmP;
  2531.  
  2532.     void            *messageP;
  2533.     } current;
  2534.     } DialogFilterMessage;
  2535.  
  2536. #endif    /* !defined (resource) */
  2537.  
  2538. /*----------------------------------------------------------------------+
  2539. |                                    |
  2540. |   Completion Bar Processing Specific Defines and Structures        |
  2541. |                                    |
  2542. +----------------------------------------------------------------------*/
  2543. #define        CMPLBAR_Width            (55 * XC)
  2544. #define        CMPLBAR_Height            (5 * YC + 4)
  2545.  
  2546. typedef struct completionbarinfo
  2547.     {
  2548.     long    percentComplete;
  2549. #if defined (resource)
  2550.     long    msgText;
  2551. #else
  2552.     char   *msgText;
  2553. #endif
  2554.     } CompletionBarInfo;
  2555.  
  2556. /*----------------------------------------------------------------------+
  2557. |                                    |
  2558. |   Track Bar Processing Specific Defines and Structures                |
  2559. |                                    |
  2560. +----------------------------------------------------------------------*/
  2561. #define     UPDATE_Percent1                1
  2562. #define     UPDATE_Percent2                2
  2563. #define     UPDATE_Msg1                    4
  2564. #define     UPDATE_Msg2                    8
  2565. #define     UPDATE_All                    15
  2566.  
  2567. typedef struct trackbarinfo
  2568.     {
  2569.     int            update;
  2570.     long        percentComplete1;
  2571.     long        percentComplete2;
  2572.     char        msgText1[256];
  2573.     char        msgText2[256];
  2574.     } TrackBarInfo;
  2575.  
  2576. #endif    /* __dlogitemH__ */
  2577.