topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-Dialogs.h / h



  /*
       File:       Dialogs.h
   
       Contains:   Dialog Manager interfaces.
   
       Version:    Technology: Mac OS 9
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1985-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __DIALOGS__
  define __DIALOGS__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __MIXEDMODE__
  include <MixedMode.h>
  endif
  
  ifndef __EVENTS__
  include <Events.h>
  endif
  
  ifndef __MACWINDOWS__
  include <MacWindows.h>
  endif
  
  ifndef __TEXTEDIT__
  include <TextEdit.h>
  endif
  
  ifndef __CONTROLS__
  include <Controls.h>
  endif
  
  ifndef __MACERRORS__
  include <MacErrors.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  enum {
                                                                  /* new, more standard names for dialog item types*/
      kControlDialogItem          = 4,
      kButtonDialogItem           = kControlDialogItem | 0,
      kCheckBoxDialogItem         = kControlDialogItem | 1,
      kRadioButtonDialogItem      = kControlDialogItem | 2,
      kResourceControlDialogItem  = kControlDialogItem | 3,
      kStaticTextDialogItem       = 8,
      kEditTextDialogItem         = 16,
      kIconDialogItem             = 32,
      kPictureDialogItem          = 64,
      kUserDialogItem             = 0,
      kItemDisableBit             = 128
  };
  
  enum {
                                                                  /* old names for dialog item types*/
      ctrlItem                    = 4,
      btnCtrl                     = 0,
      chkCtrl                     = 1,
      radCtrl                     = 2,
      resCtrl                     = 3,
      statText                    = 8,
      editText                    = 16,
      iconItem                    = 32,
      picItem                     = 64,
      userItem                    = 0,
      itemDisable                 = 128
  };
  
  enum {
                                                                  /* standard dialog item numbers*/
      kStdOkItemIndex             = 1,
      kStdCancelItemIndex         = 2,                            /* old names*/
      ok                          = kStdOkItemIndex,
      cancel                      = kStdCancelItemIndex
  };
  
  enum {
                                                                  /* standard icon resource id's    */
      kStopIcon                   = 0,
      kNoteIcon                   = 1,
      kCautionIcon                = 2,                            /* old names*/
      stopIcon                    = kStopIcon,
      noteIcon                    = kNoteIcon,
      cautionIcon                 = kCautionIcon
  };
  
  if OLDROUTINENAMES
  /*
     These constants lived briefly on ETO 16.  They suggest
     that there is only one index you can use for the OK 
     item, which is not true.  You can put the ok item 
     anywhere you want in the DITL.
  */
  enum {
      kOkItemIndex                = 1,
      kCancelItemIndex            = 2
  };
  
  endif  /* OLDROUTINENAMES */
  
  /*  Dialog Item List Manipulation Constants */
  typedef SInt16                          DITLMethod;
  enum {
      overlayDITL                 = 0,
      appendDITLRight             = 1,
      appendDITLBottom            = 2
  };
  
  typedef SInt16                          StageList;
  /* DialogRef is obsolete. Use DialogPtr instead.*/
  typedef DialogPtr                       DialogRef;
  if !OPAQUE_TOOLBOX_STRUCTS
  
  struct DialogRecord {
      WindowRecord                    window;
      Handle                          items;
      TEHandle                        textH;
      SInt16                          editField;
      SInt16                          editOpen;
      SInt16                          aDefItem;
  };
  typedef struct DialogRecord             DialogRecord;
  
  typedef DialogRecord *                  DialogPeek;
  endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  
  struct DialogTemplate {
      Rect                            boundsRect;
      SInt16                          procID;
      Boolean                         visible;
      Boolean                         filler1;
      Boolean                         goAwayFlag;
      Boolean                         filler2;
      SInt32                          refCon;
      SInt16                          itemsID;
      Str255                          title;
  };
  typedef struct DialogTemplate           DialogTemplate;
  
  typedef DialogTemplate *                DialogTPtr;
  typedef DialogTPtr *                    DialogTHndl;
  
  struct AlertTemplate {
      Rect                            boundsRect;
      SInt16                          itemsID;
      StageList                       stages;
  };
  typedef struct AlertTemplate            AlertTemplate;
  
  typedef AlertTemplate *                 AlertTPtr;
  typedef AlertTPtr *                     AlertTHndl;
  /* new type abstractions for the dialog manager */
  typedef SInt16                          DialogItemIndexZeroBased;
  typedef SInt16                          DialogItemIndex;
  typedef SInt16                          DialogItemType;
  /* dialog manager callbacks */
  typedef CALLBACK_API( void , SoundProcPtr )(SInt16 soundNumber);
  typedef CALLBACK_API( Boolean , ModalFilterProcPtr )(DialogPtr theDialog, EventRecord *theEvent, DialogItemIndex *itemHit);
  typedef CALLBACK_API( void , UserItemProcPtr )(DialogPtr theDialog, DialogItemIndex itemNo);
  typedef STACK_UPP_TYPE(SoundProcPtr)                            SoundUPP;
  typedef STACK_UPP_TYPE(ModalFilterProcPtr)                      ModalFilterUPP;
  typedef STACK_UPP_TYPE(UserItemProcPtr)                         UserItemUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(SoundUPP)
      NewSoundUPP                    (SoundProcPtr            userRoutine);
  
  endif  /* CALL_NOT_IN_CARBON */
  
      EXTERN_API(ModalFilterUPP)
      NewModalFilterUPP              (ModalFilterProcPtr      userRoutine);
  
      EXTERN_API(UserItemUPP)
      NewUserItemUPP                 (UserItemProcPtr         userRoutine);
  
  if CALL_NOT_IN_CARBON
      EXTERN_API(void)
      DisposeSoundUPP                (SoundUPP                userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
      EXTERN_API(void)
      DisposeModalFilterUPP          (ModalFilterUPP          userUPP);
  
      EXTERN_API(void)
      DisposeUserItemUPP             (UserItemUPP             userUPP);
  
  if CALL_NOT_IN_CARBON
      EXTERN_API(void)
      InvokeSoundUPP                 (SInt16                  soundNumber,
                                      SoundUPP                userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
      EXTERN_API(Boolean)
      InvokeModalFilterUPP           (DialogPtr               theDialog,
                                      EventRecord *           theEvent,
                                      DialogItemIndex *       itemHit,
                                      ModalFilterUPP          userUPP);
  
      EXTERN_API(void)
      InvokeUserItemUPP              (DialogPtr               theDialog,
                                      DialogItemIndex         itemNo,
                                      UserItemUPP             userUPP);
  
  else
      enum { uppSoundProcInfo = 0x00000080 };                         /* pascal no_return_value Func(2_bytes) */
      enum { uppModalFilterProcInfo = 0x00000FD0 };                   /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppUserItemProcInfo = 0x000002C0 };                      /* pascal no_return_value Func(4_bytes, 2_bytes) */
      #define NewSoundUPP(userRoutine)                                (SoundUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundProcInfo, GetCurrentArchitecture())
      #define NewModalFilterUPP(userRoutine)                          (ModalFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterProcInfo, GetCurrentArchitecture())
      #define NewUserItemUPP(userRoutine)                             (UserItemUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserItemProcInfo, GetCurrentArchitecture())
      #define DisposeSoundUPP(userUPP)                                DisposeRoutineDescriptor(userUPP)
      #define DisposeModalFilterUPP(userUPP)                          DisposeRoutineDescriptor(userUPP)
      #define DisposeUserItemUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
      #define InvokeSoundUPP(soundNumber, userUPP)                    CALL_ONE_PARAMETER_UPP((userUPP), uppSoundProcInfo, (soundNumber))
      #define InvokeModalFilterUPP(theDialog, theEvent, itemHit, userUPP)  (Boolean)CALL_THREE_PARAMETER_UPP((userUPP), uppModalFilterProcInfo, (theDialog), (theEvent), (itemHit))
      #define InvokeUserItemUPP(theDialog, itemNo, userUPP)           CALL_TWO_PARAMETER_UPP((userUPP), uppUserItemProcInfo, (theDialog), (itemNo))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewSoundProc(userRoutine)                               NewSoundUPP(userRoutine)
  define NewModalFilterProc(userRoutine)                         NewModalFilterUPP(userRoutine)
  define NewUserItemProc(userRoutine)                            NewUserItemUPP(userRoutine)
  define CallSoundProc(userRoutine, soundNumber)                 InvokeSoundUPP(soundNumber, userRoutine)
  define CallModalFilterProc(userRoutine, theDialog, theEvent, itemHit) InvokeModalFilterUPP(theDialog, theEvent, itemHit, userRoutine)
  define CallUserItemProc(userRoutine, theDialog, itemNo)        InvokeUserItemUPP(theDialog, itemNo, userRoutine)
  
  if !TARGET_OS_MAC
  /* QuickTime 3.0 */
  typedef CALLBACK_API_C( void , QTModelessCallbackProcPtr )(EventRecord *theEvent, DialogPtr theDialog, DialogItemIndex itemHit);
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  SetModelessDialogCallbackProc   (DialogPtr              theDialog,
                                   QTModelessCallbackProcPtr  callbackProc);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  typedef QTModelessCallbackProcPtr       QTModelessCallbackUPP;
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSErr )
  GetDialogControlNotificationProc (void *                theProc);
  
  EXTERN_API( void )
  SetDialogMovableModal           (DialogPtr              theDialog);
  
  EXTERN_API( void *)
  GetDialogParent                 (DialogPtr              theDialog);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* !TARGET_OS_MAC */
  
  /*
    ---------------------------------------------------------------------------------------------------------
      o Following types are valid with Appearance 1.0 and later
    ---------------------------------------------------------------------------------------------------------
  */
  enum {
                                                                  /* Alert types to pass into StandardAlert */
      kAlertStopAlert             = 0,
      kAlertNoteAlert             = 1,
      kAlertCautionAlert          = 2,
      kAlertPlainAlert            = 3
  };
  
  typedef SInt16                          AlertType;
  enum {
      kAlertDefaultOKText         = -1,                           /* "OK"*/
      kAlertDefaultCancelText     = -1,                           /* "Cancel"*/
      kAlertDefaultOtherText      = -1                            /* "Don't Save"*/
  };
  
  /* StandardAlert alert button numbers */
  enum {
      kAlertStdAlertOKButton      = 1,
      kAlertStdAlertCancelButton  = 2,
      kAlertStdAlertOtherButton   = 3,
      kAlertStdAlertHelpButton    = 4
  };
  
  enum {
                                                                  /* Dialog Flags for use in NewFeaturesDialog or dlgx resource */
      kDialogFlagsUseThemeBackground = (1 << 0),
      kDialogFlagsUseControlHierarchy = (1 << 1),
      kDialogFlagsHandleMovableModal = (1 << 2),
      kDialogFlagsUseThemeControls = (1 << 3)
  };
  
  enum {
                                                                  /* Alert Flags for use in alrx resource */
      kAlertFlagsUseThemeBackground = (1 << 0),
      kAlertFlagsUseControlHierarchy = (1 << 1),
      kAlertFlagsAlertIsMovable   = (1 << 2),
      kAlertFlagsUseThemeControls = (1 << 3)
  };
  
  /* For dftb resource */
  enum {
      kDialogFontNoFontStyle      = 0,
      kDialogFontUseFontMask      = 0x0001,
      kDialogFontUseFaceMask      = 0x0002,
      kDialogFontUseSizeMask      = 0x0004,
      kDialogFontUseForeColorMask = 0x0008,
      kDialogFontUseBackColorMask = 0x0010,
      kDialogFontUseModeMask      = 0x0020,
      kDialogFontUseJustMask      = 0x0040,
      kDialogFontUseAllMask       = 0x00FF,
      kDialogFontAddFontSizeMask  = 0x0100,
      kDialogFontUseFontNameMask  = 0x0200,
      kDialogFontAddToMetaFontMask = 0x0400
  };
  
  struct AlertStdAlertParamRec {
      Boolean                         movable;                    /* Make alert movable modal */
      Boolean                         helpButton;                 /* Is there a help button? */
      ModalFilterUPP                  filterProc;                 /* Event filter */
      ConstStringPtr                  defaultText;                /* Text for button in OK position */
      ConstStringPtr                  cancelText;                 /* Text for button in cancel position */
      ConstStringPtr                  otherText;                  /* Text for button in left position */
      SInt16                          defaultButton;              /* Which button behaves as the default */
      SInt16                          cancelButton;               /* Which one behaves as cancel (can be 0) */
      UInt16                          position;                   /* Position (kWindowDefaultPosition in this case */
                                                                  /* equals kWindowAlertPositionParentWindowScreen) */
  };
  typedef struct AlertStdAlertParamRec    AlertStdAlertParamRec;
  
  typedef AlertStdAlertParamRec *         AlertStdAlertParamPtr;
  /* --- end Appearance 1.0 or later stuff*/
  
  /*
      NOTE: Code running under MultiFinder or System 7.0 or newer
      should always pass NULL to InitDialogs.
  */
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  InitDialogs                     (void *                 ignored)                            ONEWORDINLINE(0xA97B);
  
  EXTERN_API( void )
  ErrorSound                      (SoundUPP               soundProc)                          ONEWORDINLINE(0xA98C);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API( DialogPtr )
  NewDialog                       (void *                 dStorage,
                                   const Rect *           boundsRect,
                                   ConstStr255Param       title,
                                   Boolean                visible,
                                   SInt16                 procID,
                                   WindowPtr              behind,
                                   Boolean                goAwayFlag,
                                   SInt32                 refCon,
                                   Handle                 items)                              ONEWORDINLINE(0xA97D);
  
  EXTERN_API( DialogPtr )
  GetNewDialog                    (SInt16                 dialogID,
                                   void *                 dStorage,
                                   WindowPtr              behind)                             ONEWORDINLINE(0xA97C);
  
  EXTERN_API( DialogPtr )
  NewColorDialog                  (void *                 dStorage,
                                   const Rect *           boundsRect,
                                   ConstStr255Param       title,
                                   Boolean                visible,
                                   SInt16                 procID,
                                   WindowPtr              behind,
                                   Boolean                goAwayFlag,
                                   SInt32                 refCon,
                                   Handle                 items)                              ONEWORDINLINE(0xAA4B);
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  CloseDialog                     (DialogPtr              theDialog)                          ONEWORDINLINE(0xA982);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API( void )
  DisposeDialog                   (DialogPtr              theDialog)                          ONEWORDINLINE(0xA983);
  
  EXTERN_API( void )
  ModalDialog                     (ModalFilterUPP         modalFilter,
                                   DialogItemIndex *      itemHit)                            ONEWORDINLINE(0xA991);
  
  EXTERN_API( Boolean )
  IsDialogEvent                   (const EventRecord *    theEvent)                           ONEWORDINLINE(0xA97F);
  
  EXTERN_API( Boolean )
  DialogSelect                    (const EventRecord *    theEvent,
                                   DialogPtr *            theDialog,
                                   DialogItemIndex *      itemHit)                            ONEWORDINLINE(0xA980);
  
  EXTERN_API( void )
  DrawDialog                      (DialogPtr              theDialog)                          ONEWORDINLINE(0xA981);
  
  EXTERN_API( void )
  UpdateDialog                    (DialogPtr              theDialog,
                                   RgnHandle              updateRgn)                          ONEWORDINLINE(0xA978);
  
  EXTERN_API( void )
  HideDialogItem                  (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo)                             ONEWORDINLINE(0xA827);
  
  EXTERN_API( void )
  ShowDialogItem                  (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo)                             ONEWORDINLINE(0xA828);
  
  EXTERN_API( DialogItemIndexZeroBased )
  FindDialogItem                  (DialogPtr              theDialog,
                                   Point                  thePt)                              ONEWORDINLINE(0xA984);
  
  EXTERN_API( void )
  DialogCut                       (DialogPtr              theDialog);
  
  EXTERN_API( void )
  DialogPaste                     (DialogPtr              theDialog);
  
  EXTERN_API( void )
  DialogCopy                      (DialogPtr              theDialog);
  
  EXTERN_API( void )
  DialogDelete                    (DialogPtr              theDialog);
  
  EXTERN_API( DialogItemIndex )
  Alert                           (SInt16                 alertID,
                                   ModalFilterUPP         modalFilter)                        ONEWORDINLINE(0xA985);
  
  EXTERN_API( DialogItemIndex )
  StopAlert                       (SInt16                 alertID,
                                   ModalFilterUPP         modalFilter)                        ONEWORDINLINE(0xA986);
  
  EXTERN_API( DialogItemIndex )
  NoteAlert                       (SInt16                 alertID,
                                   ModalFilterUPP         modalFilter)                        ONEWORDINLINE(0xA987);
  
  EXTERN_API( DialogItemIndex )
  CautionAlert                    (SInt16                 alertID,
                                   ModalFilterUPP         modalFilter)                        ONEWORDINLINE(0xA988);
  
  EXTERN_API( void )
  GetDialogItem                   (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo,
                                   DialogItemType *       itemType,
                                   Handle *               item,
                                   Rect *                 box)                                ONEWORDINLINE(0xA98D);
  
  EXTERN_API( void )
  SetDialogItem                   (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo,
                                   DialogItemType         itemType,
                                   Handle                 item,
                                   const Rect *           box)                                ONEWORDINLINE(0xA98E);
  
  EXTERN_API( void )
  ParamText                       (ConstStr255Param       param0,
                                   ConstStr255Param       param1,
                                   ConstStr255Param       param2,
                                   ConstStr255Param       param3)                             ONEWORDINLINE(0xA98B);
  
  EXTERN_API( void )
  SelectDialogItemText            (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo,
                                   SInt16                 strtSel,
                                   SInt16                 endSel)                             ONEWORDINLINE(0xA97E);
  
  EXTERN_API( void )
  GetDialogItemText               (Handle                 item,
                                   Str255                 text)                               ONEWORDINLINE(0xA990);
  
  EXTERN_API( void )
  SetDialogItemText               (Handle                 item,
                                   ConstStr255Param       text)                               ONEWORDINLINE(0xA98F);
  
  EXTERN_API( SInt16 )
  GetAlertStage                   (void)                                                      TWOWORDINLINE(0x3EB8, 0x0A9A);
  
  EXTERN_API( void )
  SetDialogFont                   (SInt16                 fontNum)                            TWOWORDINLINE(0x31DF, 0x0AFA);
  
  EXTERN_API( void )
  ResetAlertStage                 (void)                                                      TWOWORDINLINE(0x4278, 0x0A9A);
  
  /* APIs in Carbon*/
  EXTERN_API( void )
  GetParamText                    (StringPtr              param0,
                                   StringPtr              param1,
                                   StringPtr              param2,
                                   StringPtr              param3);
  
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( DialogPtr )
  newdialog                       (void *                 dStorage,
                                   const Rect *           boundsRect,
                                   const char *           title,
                                   Boolean                visible,
                                   SInt16                 procID,
                                   WindowPtr              behind,
                                   Boolean                goAwayFlag,
                                   SInt32                 refCon,
                                   Handle                 items);
  
  EXTERN_API_C( DialogPtr )
  newcolordialog                  (void *                 dStorage,
                                   const Rect *           boundsRect,
                                   const char *           title,
                                   Boolean                visible,
                                   SInt16                 procID,
                                   WindowPtr              behind,
                                   Boolean                goAwayFlag,
                                   SInt32                 refCon,
                                   Handle                 items);
  
  EXTERN_API_C( void )
  paramtext                       (const char *           param0,
                                   const char *           param1,
                                   const char *           param2,
                                   const char *           param3);
  
  EXTERN_API_C( void )
  getdialogitemtext               (Handle                 item,
                                   char *                 text);
  
  EXTERN_API_C( void )
  setdialogitemtext               (Handle                 item,
                                   const char *           text);
  
  EXTERN_API_C( DialogItemIndexZeroBased )
  finddialogitem                  (DialogPtr              theDialog,
                                   Point *                thePt);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  EXTERN_API( void )
  AppendDITL                      (DialogPtr              theDialog,
                                   Handle                 theHandle,
                                   DITLMethod             method);
  
  EXTERN_API( DialogItemIndex )
  CountDITL                       (DialogPtr              theDialog);
  
  EXTERN_API( void )
  ShortenDITL                     (DialogPtr              theDialog,
                                   DialogItemIndex        numberItems);
  
  EXTERN_API( OSStatus )
  InsertDialogItem                (DialogPtr              theDialog,
                                   DialogItemIndex        afterItem,
                                   DialogItemType         itemType,
                                   Handle                 itemHandle,
                                   const Rect *           box);
  
  EXTERN_API( OSStatus )
  RemoveDialogItems               (DialogPtr              theDialog,
                                   DialogItemIndex        itemNo,
                                   DialogItemIndex        amountToRemove,
                                   Boolean                disposeItemData);
  
  EXTERN_API( Boolean )
  StdFilterProc                   (DialogPtr              theDialog,
                                   EventRecord *          event,
                                   DialogItemIndex *      itemHit);
  
  EXTERN_API( OSErr )
  GetStdFilterProc                (ModalFilterUPP *       theProc)                            THREEWORDINLINE(0x303C, 0x0203, 0xAA68);
  
  EXTERN_API( OSErr )
  SetDialogDefaultItem            (DialogPtr              theDialog,
                                   DialogItemIndex        newItem)                            THREEWORDINLINE(0x303C, 0x0304, 0xAA68);
  
  EXTERN_API( OSErr )
  SetDialogCancelItem             (DialogPtr              theDialog,
                                   DialogItemIndex        newItem)                            THREEWORDINLINE(0x303C, 0x0305, 0xAA68);
  
  EXTERN_API( OSErr )
  SetDialogTracksCursor           (DialogPtr              theDialog,
                                   Boolean                tracks)                             THREEWORDINLINE(0x303C, 0x0306, 0xAA68);
  
  /*
    ---------------------------------------------------------------------------------------------------------
      o Appearance Dialog Routines (available only with Appearance 1.0 and later)
    ---------------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API( DialogPtr )
  NewFeaturesDialog               (void *                 inStorage,
                                   const Rect *           inBoundsRect,
                                   ConstStr255Param       inTitle,
                                   Boolean                inIsVisible,
                                   SInt16                 inProcID,
                                   WindowPtr              inBehind,
                                   Boolean                inGoAwayFlag,
                                   SInt32                 inRefCon,
                                   Handle                 inItemListHandle,
                                   UInt32                 inFlags)                            THREEWORDINLINE(0x303C, 0x110C, 0xAA68);
  
  EXTERN_API( OSErr )
  AutoSizeDialog                  (DialogPtr              inDialog)                           THREEWORDINLINE(0x303C, 0x020D, 0xAA68);
  
  /*
      Regarding StandardAlert and constness:
      Even though the inAlertParam parameter is marked const here, there was
      a chance Dialog Manager would modify it on versions of Mac OS prior to 9.
  */
  EXTERN_API( OSErr )
  StandardAlert                   (AlertType              inAlertType,
                                   ConstStr255Param       inError,
                                   ConstStr255Param       inExplanation,
                                   const AlertStdAlertParamRec * inAlertParam,
                                   SInt16 *               outItemHit)                         THREEWORDINLINE(0x303C, 0x090E, 0xAA68);
  
  EXTERN_API( OSErr )
  GetDialogItemAsControl          (DialogPtr              inDialog,
                                   SInt16                 inItemNo,
                                   ControlHandle *        outControl)                         THREEWORDINLINE(0x303C, 0x050F, 0xAA68);
  
  EXTERN_API( OSErr )
  MoveDialogItem                  (DialogPtr              inDialog,
                                   SInt16                 inItemNo,
                                   SInt16                 inHoriz,
                                   SInt16                 inVert)                             THREEWORDINLINE(0x303C, 0x0510, 0xAA68);
  
  EXTERN_API( OSErr )
  SizeDialogItem                  (DialogPtr              inDialog,
                                   SInt16                 inItemNo,
                                   SInt16                 inWidth,
                                   SInt16                 inHeight)                           THREEWORDINLINE(0x303C, 0x0511, 0xAA68);
  
  EXTERN_API( OSErr )
  AppendDialogItemList            (DialogPtr              dialog,
                                   SInt16                 ditlID,
                                   DITLMethod             method)                             THREEWORDINLINE(0x303C, 0x0412, 0xAA68);
  
  /*
    ---------------------------------------------------------------------------------------------------------
      o Dialog Routines available only with Appearance 1.1 and later
    ---------------------------------------------------------------------------------------------------------
  */
  
  EXTERN_API( OSStatus )
  SetDialogTimeout                (DialogPtr              inDialog,
                                   SInt16                 inButtonToPress,
                                   UInt32                 inSecondsToWait);
  
  EXTERN_API( OSStatus )
  GetDialogTimeout                (DialogPtr              inDialog,
                                   SInt16 *               outButtonToPress,
                                   UInt32 *               outSecondsToWait,
                                   UInt32 *               outSecondsRemaining);
  
  EXTERN_API( OSStatus )
  SetModalDialogEventMask         (DialogPtr              inDialog,
                                   EventMask              inMask);
  
  EXTERN_API( OSStatus )
  GetModalDialogEventMask         (DialogPtr              inDialog,
                                   EventMask *            outMask);
  
  if OLDROUTINENAMES
  define DisposDialog(theDialog) DisposeDialog(theDialog)
  define UpdtDialog(theDialog, updateRgn) UpdateDialog(theDialog, updateRgn)
  define GetDItem(theDialog, itemNo, itemType, item, box) GetDialogItem(theDialog, itemNo, itemType, item, box)
  define SetDItem(theDialog, itemNo, itemType, item, box) SetDialogItem(theDialog, itemNo, itemType, item, box)
  define HideDItem(theDialog, itemNo) HideDialogItem(theDialog, itemNo)
  define ShowDItem(theDialog, itemNo) ShowDialogItem(theDialog, itemNo)
  define SelIText(theDialog, itemNo, strtSel, endSel) SelectDialogItemText(theDialog, itemNo, strtSel, endSel)
  define GetIText(item, text) GetDialogItemText(item, text)
  define SetIText(item, text) SetDialogItemText(item, text)
  define FindDItem(theDialog, thePt) FindDialogItem(theDialog, thePt)
  define NewCDialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items) \
  NewColorDialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items)
  define GetAlrtStage() GetAlertStage()
  define ResetAlrtStage() ResetAlertStage()
  define DlgCut(theDialog) DialogCut(theDialog)
  define DlgPaste(theDialog) DialogPaste(theDialog)
  define DlgCopy(theDialog) DialogCopy(theDialog)
  define DlgDelete(theDialog) DialogDelete(theDialog)
  define SetDAFont(fontNum) SetDialogFont(fontNum)
  if CGLUESUPPORTED
  define newcdialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items) \
  newcolordialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items)
  define getitext(item, text) getdialogitemtext(item, text)
  define setitext(item, text) setdialogitemtext(item, text)
  define findditem(theDialog, thePt) finddialogitem(theDialog, thePt)
  endif
  
  endif  /* OLDROUTINENAMES */
  
  /*
      *****************************************************************************
      *                                                                           *
      * The conditional STRICT_DIALOGS has been removed from this interface file. *
      * The accessor macros to a DialogRecord are no longer necessary.            *
      *                                                                           *
      * All *Ref Types have reverted to their original Handle and Ptr Types.      *
      *                                                                           *
      *****************************************************************************
  
      Details:
      The original purpose of the STRICT_ conditionals and accessor macros was to
      help ease the transition to Copland.  Shared data structures are difficult
      to coordinate in a preemptive multitasking OS.  By hiding the fields in a
      WindowRecord and other data structures, we would begin the migration to the
      discipline wherein system data structures are completely hidden from
      applications.
      
      After many design reviews, we finally concluded that with this sort of
      migration, the system could never tell when an application was no longer
      peeking at a WindowRecord, and thus the data structure might never become
      system owned.  Additionally, there were many other limitations in the
      classic toolbox that were begging to be addressed.  The final decision was
      to leave the traditional toolbox as a compatibility mode.
      
      We also decided to use the Handle and Ptr based types in the function
      declarations.  For example, NewWindow now returns a WindowPtr rather than a
      WindowRef.  The Ref types are still defined in the header files, so all
      existing code will still compile exactly as it did before.  There are
      several reasons why we chose to do this:
      
      - The importance of backwards compatibility makes it unfeasible for us to
      enforce real opaque references in the implementation anytime in the
      foreseeable future.  Therefore, any opaque data types (e.g. WindowRef,
      ControlRef, etc.) in the documentation and header files would always be a
      fake veneer of opacity.
      
      - There exists a significant base of books and sample code that neophyte
      Macintosh developers use to learn how to program the Macintosh.  These
      books and sample code all use direct data access.  Introducing opaque data
      types at this point would confuse neophyte programmers more than it would
      help them.
      
      - Direct data structure access is used by nearly all Macintosh developers. 
      Changing the interfaces to reflect a false opacity would not provide any
      benefit to these developers.
      
      - Accessor functions are useful in and of themselves as convenience
      functions, without being tied to opaque data types.  We will complete and
      document the Windows and Dialogs accessor functions in an upcoming release
      of the interfaces.
  */
  if !OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS
  ifdef __cplusplus
  inline WindowPtr    GetDialogWindow(DialogPtr dialog)       { return (WindowPtr) dialog;                        }
  inline SInt16       GetDialogDefaultItem(DialogPtr dialog)  { return (*(SInt16 *) (((UInt8 *) dialog) + 168));  }
  inline SInt16       GetDialogCancelItem(DialogPtr dialog)   { return (*(SInt16 *) (((UInt8 *) dialog) + 166));  }
  inline SInt16       GetDialogKeyboardFocusItem(DialogPtr dialog)    { return (SInt16) ((*(SInt16 *) (((UInt8 *) dialog) + 164)) < 0 ? -1 : (*(SInt16 *) (((UInt8 *) dialog) + 164)) + 1); }
  inline void     SetGrafPortOfDialog(DialogPtr dialog) { MacSetPort ((GrafPtr) dialog); }
  else
  define GetDialogWindow(dialog) ((WindowPtr) dialog)
  define GetDialogDefaultItem(dialog) (*(SInt16 *) (((UInt8 *) dialog) + 168))
  define GetDialogCancelItem(dialog) (*(SInt16 *) (((UInt8 *) dialog) + 166))
  define GetDialogKeyboardFocusItem(dialog) ((SInt16)((*(SInt16 *) (((UInt8 *) dialog) + 164)) < 0 ? -1 : (*(SInt16 *) (((UInt8 *) dialog) + 164)) + 1))
  define SetGrafPortOfDialog(dialog) do { MacSetPort ((GrafPtr) dialog); } while (false)
  endif
  endif  /* !OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS */
  
  if ACCESSOR_CALLS_ARE_FUNCTIONS
  /* Getters */
  EXTERN_API( WindowPtr )
  GetDialogWindow                 (DialogPtr              dialog);
  
  EXTERN_API( TEHandle )
  GetDialogTextEditHandle         (DialogPtr              dialog);
  
  EXTERN_API( SInt16 )
  GetDialogDefaultItem            (DialogPtr              dialog);
  
  EXTERN_API( SInt16 )
  GetDialogCancelItem             (DialogPtr              dialog);
  
  EXTERN_API( SInt16 )
  GetDialogKeyboardFocusItem      (DialogPtr              dialog);
  
  /* Setters */
  /* Utilities */
  EXTERN_API( void )
  SetPortDialogPort               (DialogPtr              dialog);
  
  EXTERN_API( CGrafPtr )
  GetDialogPort                   (DialogPtr              dialog);
  
  /* To prevent upward dependencies, GetDialogFromWindow() is defined here instead of MacWindows.i */
  EXTERN_API( DialogPtr )
  GetDialogFromWindow             (WindowPtr              window);
  
  endif  /* ACCESSOR_CALLS_ARE_FUNCTIONS */
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( void )
  CouldDialog                     (SInt16                 dialogID)                           ONEWORDINLINE(0xA979);
  
  EXTERN_API( void )
  FreeDialog                      (SInt16                 dialogID)                           ONEWORDINLINE(0xA97A);
  
  EXTERN_API( void )
  CouldAlert                      (SInt16                 alertID)                            ONEWORDINLINE(0xA989);
  
  EXTERN_API( void )
  FreeAlert                       (SInt16                 alertID)                            ONEWORDINLINE(0xA98A);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if !TARGET_OS_MAC
  endif  /* !TARGET_OS_MAC */
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __DIALOGS__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.