Dialogs.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:38k
- /*
- 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__ */