You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3526 lines
127 KiB
3526 lines
127 KiB
/* |
|
File: Controls.h |
|
|
|
Contains: Control Manager interfaces |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (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 __CONTROLS__ |
|
#define __CONTROLS__ |
|
|
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __QUICKDRAW__ |
|
#include <Quickdraw.h> |
|
#endif |
|
|
|
#ifndef __COLLECTIONS__ |
|
#include <Collections.h> |
|
#endif |
|
|
|
#ifndef __MACERRORS__ |
|
#include <MacErrors.h> |
|
#endif |
|
|
|
#ifndef __CFSTRING__ |
|
#include <CFString.h> |
|
#endif |
|
|
|
#ifndef __ICONS__ |
|
#include <Icons.h> |
|
#endif |
|
|
|
#ifndef __HIOBJECT__ |
|
#include <HIObject.h> |
|
#endif |
|
|
|
#ifndef __MENUS__ |
|
#include <Menus.h> |
|
#endif |
|
|
|
#ifndef __TEXTEDIT__ |
|
#include <TextEdit.h> |
|
#endif |
|
|
|
#ifndef __DRAG__ |
|
#include <Drag.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 |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Resource Types */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
kControlDefProcType = FOUR_CHAR_CODE('CDEF'), |
|
kControlTemplateResourceType = FOUR_CHAR_CODE('CNTL'), |
|
kControlColorTableResourceType = FOUR_CHAR_CODE('cctb'), |
|
kControlDefProcResourceType = FOUR_CHAR_CODE('CDEF') |
|
}; |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Format of a 'CNTL' resource */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
struct ControlTemplate { |
|
Rect controlRect; |
|
SInt16 controlValue; |
|
Boolean controlVisible; |
|
UInt8 fill; |
|
SInt16 controlMaximum; |
|
SInt16 controlMinimum; |
|
SInt16 controlDefProcID; |
|
SInt32 controlReference; |
|
Str255 controlTitle; |
|
}; |
|
typedef struct ControlTemplate ControlTemplate; |
|
typedef ControlTemplate * ControlTemplatePtr; |
|
typedef ControlTemplatePtr * ControlTemplateHandle; |
|
|
|
|
|
#if !TARGET_OS_MAC |
|
/* |
|
--------------------------------------------------------------------------------------------------------- |
|
o NON-MAC COMPATIBILITY CODES (QuickTime 3.0) |
|
--------------------------------------------------------------------------------------------------------- |
|
*/ |
|
typedef UInt32 ControlNotification; |
|
enum { |
|
controlNotifyNothing = FOUR_CHAR_CODE('nada'), /* No (null) notification*/ |
|
controlNotifyClick = FOUR_CHAR_CODE('clik'), /* Control was clicked*/ |
|
controlNotifyFocus = FOUR_CHAR_CODE('focu'), /* Control got keyboard focus*/ |
|
controlNotifyKey = FOUR_CHAR_CODE('key ') /* Control got a keypress*/ |
|
}; |
|
|
|
typedef UInt32 ControlCapabilities; |
|
enum { |
|
kControlCanAutoInvalidate = 1L << 0 /* Control component automatically invalidates areas left behind after hide/move operation.*/ |
|
}; |
|
|
|
/* procID's for our added "controls"*/ |
|
enum { |
|
staticTextProc = 256, /* static text*/ |
|
editTextProc = 272, /* editable text*/ |
|
iconProc = 288, /* icon*/ |
|
userItemProc = 304, /* user drawn item*/ |
|
pictItemProc = 320 /* pict*/ |
|
}; |
|
|
|
#endif /* !TARGET_OS_MAC */ |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o ControlRef */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
#if !OPAQUE_TOOLBOX_STRUCTS |
|
typedef struct ControlRecord ControlRecord; |
|
typedef ControlRecord * ControlPtr; |
|
typedef ControlPtr * ControlRef; |
|
#else |
|
typedef struct OpaqueControlRef* ControlRef; |
|
#endif /* !OPAQUE_TOOLBOX_STRUCTS */ |
|
|
|
/* ControlHandle is obsolete. Use ControlRef.*/ |
|
typedef ControlRef ControlHandle; |
|
typedef SInt16 ControlPartCode; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control ActionProcPtr */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
typedef CALLBACK_API( void , ControlActionProcPtr )(ControlRef theControl, ControlPartCode partCode); |
|
typedef STACK_UPP_TYPE(ControlActionProcPtr) ControlActionUPP; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o ControlRecord */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
#if !OPAQUE_TOOLBOX_STRUCTS |
|
struct ControlRecord { |
|
ControlRef nextControl; /* in Carbon use embedding heirarchy functions*/ |
|
WindowRef contrlOwner; /* in Carbon use GetControlOwner or EmbedControl*/ |
|
Rect contrlRect; /* in Carbon use Get/SetControlBounds*/ |
|
UInt8 contrlVis; /* in Carbon use IsControlVisible, SetControlVisibility*/ |
|
UInt8 contrlHilite; /* in Carbon use GetControlHilite, HiliteControl*/ |
|
SInt16 contrlValue; /* in Carbon use Get/SetControlValue, Get/SetControl32BitValue*/ |
|
SInt16 contrlMin; /* in Carbon use Get/SetControlMinimum, Get/SetControl32BitMinimum*/ |
|
SInt16 contrlMax; /* in Carbon use Get/SetControlMaximum, Get/SetControl32BitMaximum*/ |
|
Handle contrlDefProc; /* not supported in Carbon*/ |
|
Handle contrlData; /* in Carbon use Get/SetControlDataHandle*/ |
|
ControlActionUPP contrlAction; /* in Carbon use Get/SetControlAction*/ |
|
SInt32 contrlRfCon; /* in Carbon use Get/SetControlReference*/ |
|
Str255 contrlTitle; /* in Carbon use Get/SetControlTitle*/ |
|
}; |
|
|
|
#endif /* !OPAQUE_TOOLBOX_STRUCTS */ |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control ActionProcPtr : Epilogue */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* |
|
* NewControlActionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlActionUPP ) |
|
NewControlActionUPP(ControlActionProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppControlActionProcInfo = 0x000002C0 }; /* pascal no_return_value Func(4_bytes, 2_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlActionUPP) NewControlActionUPP(ControlActionProcPtr userRoutine) { return (ControlActionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlActionProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewControlActionUPP(userRoutine) (ControlActionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlActionProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeControlActionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeControlActionUPP(ControlActionUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeControlActionUPP(ControlActionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeControlActionUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeControlActionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
InvokeControlActionUPP( |
|
ControlRef theControl, |
|
ControlPartCode partCode, |
|
ControlActionUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) InvokeControlActionUPP(ControlRef theControl, ControlPartCode partCode, ControlActionUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppControlActionProcInfo, theControl, partCode); } |
|
#else |
|
#define InvokeControlActionUPP(theControl, partCode, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppControlActionProcInfo, (theControl), (partCode)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewControlActionProc(userRoutine) NewControlActionUPP(userRoutine) |
|
#define CallControlActionProc(userRoutine, theControl, partCode) InvokeControlActionUPP(theControl, partCode, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Color Table */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
cFrameColor = 0, |
|
cBodyColor = 1, |
|
cTextColor = 2, |
|
cThumbColor = 3, |
|
kNumberCtlCTabEntries = 4 |
|
}; |
|
|
|
struct CtlCTab { |
|
SInt32 ccSeed; |
|
SInt16 ccRider; |
|
SInt16 ctSize; |
|
ColorSpec ctTable[4]; |
|
}; |
|
typedef struct CtlCTab CtlCTab; |
|
typedef CtlCTab * CCTabPtr; |
|
typedef CCTabPtr * CCTabHandle; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Auxiliary Control Record */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
#if !OPAQUE_TOOLBOX_STRUCTS |
|
struct AuxCtlRec { |
|
Handle acNext; /* not supported in Carbon*/ |
|
ControlRef acOwner; /* not supported in Carbon*/ |
|
CCTabHandle acCTable; /* not supported in Carbon*/ |
|
SInt16 acFlags; /* not supported in Carbon*/ |
|
SInt32 acReserved; /* not supported in Carbon*/ |
|
SInt32 acRefCon; /* in Carbon use Get/SetControlProperty if you need more refCons*/ |
|
}; |
|
typedef struct AuxCtlRec AuxCtlRec; |
|
typedef AuxCtlRec * AuxCtlPtr; |
|
typedef AuxCtlPtr * AuxCtlHandle; |
|
#endif /* !OPAQUE_TOOLBOX_STRUCTS */ |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Variants */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
typedef SInt16 ControlVariant; |
|
enum { |
|
kControlNoVariant = 0, /* No variant*/ |
|
kControlUsesOwningWindowsFontVariant = 1 << 3 /* Control uses owning windows font to display text*/ |
|
}; |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Part Codes */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* Basic part codes */ |
|
enum { |
|
kControlNoPart = 0, |
|
kControlIndicatorPart = 129, |
|
kControlDisabledPart = 254, |
|
kControlInactivePart = 255 |
|
}; |
|
|
|
/* Use this constant in Get/SetControlData when the data referred to is not */ |
|
/* specific to a part, but rather the entire control, e.g. the list handle of a */ |
|
/* list box control. */ |
|
enum { |
|
kControlEntireControl = 0 |
|
}; |
|
|
|
/* Meta-Parts */ |
|
/* */ |
|
/* If you haven't guessed from looking at other toolbox headers. We like the word */ |
|
/* 'meta'. It's cool. So here's one more for you. A meta-part is a part used in a call */ |
|
/* to the GetControlRegion API. These parts are parts that might be defined by a */ |
|
/* control, but should not be returned from calls like TestControl, et al. They define */ |
|
/* a region of a control, presently the structure and the content region. The content */ |
|
/* region is only defined by controls that can embed other controls. It is the area */ |
|
/* that embedded content can live. */ |
|
/* */ |
|
/* Along with these parts, you can also pass in normal part codes to get the regions */ |
|
/* of the parts. Not all controls fully support this at the time this was written. */ |
|
enum { |
|
kControlStructureMetaPart = -1, |
|
kControlContentMetaPart = -2 |
|
}; |
|
|
|
/* focusing part codes */ |
|
enum { |
|
kControlFocusNoPart = 0, /* tells control to clear its focus*/ |
|
kControlFocusNextPart = -1, /* tells control to focus on the next part*/ |
|
kControlFocusPrevPart = -2 /* tells control to focus on the previous part*/ |
|
}; |
|
|
|
typedef SInt16 ControlFocusPart; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Collection Tags */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* These are standard tags that you will find in the initial data Collection that is passed in the */ |
|
/* 'param' parameter to the initCntl message (Carbon only). */ |
|
/* */ |
|
/* All tags at ID zero in a Control's Collection are reserved for Control Manager use. */ |
|
/* Custom control definitions should use other IDs. */ |
|
/* */ |
|
/* Most of these tags are interpreted when you call CreateCustomControl; the Control Manager will */ |
|
/* put value in the right place before calling the Control Definition with the initialization message. */ |
|
enum { |
|
kControlCollectionTagBounds = FOUR_CHAR_CODE('boun'), /* Rect - the bounding rectangle*/ |
|
kControlCollectionTagValue = FOUR_CHAR_CODE('valu'), /* SInt32 - the value*/ |
|
kControlCollectionTagMinimum = FOUR_CHAR_CODE('min '), /* SInt32 - the minimum*/ |
|
kControlCollectionTagMaximum = FOUR_CHAR_CODE('max '), /* SInt32 - the maximum*/ |
|
kControlCollectionTagViewSize = FOUR_CHAR_CODE('view'), /* SInt32 - the view size*/ |
|
kControlCollectionTagVisibility = FOUR_CHAR_CODE('visi'), /* Boolean - the visible state*/ |
|
kControlCollectionTagRefCon = FOUR_CHAR_CODE('refc'), /* SInt32 - the refCon*/ |
|
kControlCollectionTagTitle = FOUR_CHAR_CODE('titl'), /* arbitrarily sized character array - the title*/ |
|
kControlCollectionTagUnicodeTitle = FOUR_CHAR_CODE('uttl'), /* bytes as received via CFStringCreateExternalRepresentation*/ |
|
kControlCollectionTagIDSignature = FOUR_CHAR_CODE('idsi'), /* OSType - the ControlID signature*/ |
|
kControlCollectionTagIDID = FOUR_CHAR_CODE('idid'), /* SInt32 - the ControlID id*/ |
|
kControlCollectionTagCommand = FOUR_CHAR_CODE('cmd '), /* UInt32 - the command*/ |
|
kControlCollectionTagVarCode = FOUR_CHAR_CODE('varc') /* SInt16 - the variant*/ |
|
}; |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Image Content */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
kControlContentTextOnly = 0, |
|
kControlNoContent = 0, |
|
kControlContentIconSuiteRes = 1, |
|
kControlContentCIconRes = 2, |
|
kControlContentPictRes = 3, |
|
kControlContentICONRes = 4, |
|
kControlContentIconSuiteHandle = 129, |
|
kControlContentCIconHandle = 130, |
|
kControlContentPictHandle = 131, |
|
kControlContentIconRef = 132, |
|
kControlContentICON = 133 |
|
}; |
|
|
|
typedef SInt16 ControlContentType; |
|
struct ControlButtonContentInfo { |
|
ControlContentType contentType; |
|
union { |
|
SInt16 resID; |
|
CIconHandle cIconHandle; |
|
Handle iconSuite; |
|
IconRef iconRef; |
|
PicHandle picture; |
|
Handle ICONHandle; |
|
} u; |
|
}; |
|
typedef struct ControlButtonContentInfo ControlButtonContentInfo; |
|
typedef ControlButtonContentInfo * ControlButtonContentInfoPtr; |
|
typedef ControlButtonContentInfo ControlImageContentInfo; |
|
typedef ControlButtonContentInfo * ControlImageContentInfoPtr; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Key Script Behavior */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
kControlKeyScriptBehaviorAllowAnyScript = FOUR_CHAR_CODE('any '), /* leaves the current keyboard alone and allows user to change the keyboard.*/ |
|
kControlKeyScriptBehaviorPrefersRoman = FOUR_CHAR_CODE('prmn'), /* switches the keyboard to roman, but allows them to change it as desired.*/ |
|
kControlKeyScriptBehaviorRequiresRoman = FOUR_CHAR_CODE('rrmn') /* switches the keyboard to roman and prevents the user from changing it.*/ |
|
}; |
|
|
|
typedef UInt32 ControlKeyScriptBehavior; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Font Style */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* SPECIAL FONT USAGE NOTES: You can specify the font to use for many control types. |
|
The constants below are meta-font numbers which you can use to set a particular |
|
control's font usage. There are essentially two modes you can use: 1) default, |
|
which is essentially the same as it always has been, i.e. it uses the system font, unless |
|
directed to use the window font via a control variant. 2) you can specify to use |
|
the big or small system font in a generic manner. The Big system font is the font |
|
used in menus, etc. Chicago has filled that role for some time now. Small system |
|
font is currently Geneva 10. The meta-font number implies the size and style. |
|
|
|
NOTE: Not all font attributes are used by all controls. Most, in fact, ignore |
|
the fore and back color (Static Text is the only one that does, for |
|
backwards compatibility). Also size, face, and addFontSize are ignored |
|
when using the meta-font numbering. |
|
*/ |
|
/* Meta-font numbering - see note above */ |
|
enum { |
|
kControlFontBigSystemFont = -1, /* force to big system font*/ |
|
kControlFontSmallSystemFont = -2, /* force to small system font*/ |
|
kControlFontSmallBoldSystemFont = -3, /* force to small bold system font*/ |
|
kControlFontViewSystemFont = -4 /* force to views system font (DataBrowser control only)*/ |
|
}; |
|
|
|
/* Add these masks together to set the flags field of a ControlFontStyleRec */ |
|
/* They specify which fields to apply to the text. It is important to make */ |
|
/* sure that you specify only the fields that you wish to set. */ |
|
enum { |
|
kControlUseFontMask = 0x0001, |
|
kControlUseFaceMask = 0x0002, |
|
kControlUseSizeMask = 0x0004, |
|
kControlUseForeColorMask = 0x0008, |
|
kControlUseBackColorMask = 0x0010, |
|
kControlUseModeMask = 0x0020, |
|
kControlUseJustMask = 0x0040, |
|
kControlUseAllMask = 0x00FF, |
|
kControlAddFontSizeMask = 0x0100 |
|
}; |
|
|
|
/* AddToMetaFont indicates that we want to start with a standard system */ |
|
/* font, but then we'd like to add the other attributes. Normally, the meta */ |
|
/* font ignores all other flags */ |
|
enum { |
|
kControlAddToMetaFontMask = 0x0200 /* Available in Appearance 1.1 or later*/ |
|
}; |
|
|
|
/* UseThemeFontID indicates that the font field of the ControlFontStyleRec */ |
|
/* should be interpreted as a ThemeFontID (see Appearance.h). In all other */ |
|
/* ways, specifying a ThemeFontID is just like using one of the control */ |
|
/* meta-fonts IDs. */ |
|
enum { |
|
kControlUseThemeFontIDMask = 0x0080 /* Available in Mac OS X or later*/ |
|
}; |
|
|
|
struct ControlFontStyleRec { |
|
SInt16 flags; |
|
SInt16 font; |
|
SInt16 size; |
|
SInt16 style; |
|
SInt16 mode; |
|
SInt16 just; |
|
RGBColor foreColor; |
|
RGBColor backColor; |
|
}; |
|
typedef struct ControlFontStyleRec ControlFontStyleRec; |
|
typedef ControlFontStyleRec * ControlFontStylePtr; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Click Activation Results */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* These are for use with GetControlClickActivation. The enumerated values should be pretty */ |
|
/* self-explanatory, but just in case: */ |
|
/* o Activate/DoNotActivate indicates whether or not to change the owning window's z-ordering before */ |
|
/* processing the click. If activation is requested, you may also want to immediately redraw the */ |
|
/* newly exposed portion of the window. */ |
|
/* o Ignore/Handle Click indicates whether or not to call an appropriate click handling API (like */ |
|
/* HandleControlClick) in respose to the event. */ |
|
enum { |
|
kDoNotActivateAndIgnoreClick = 0, /* probably never used. here for completeness.*/ |
|
kDoNotActivateAndHandleClick = 1, /* let the control handle the click while the window is still in the background.*/ |
|
kActivateAndIgnoreClick = 2, /* control doesn't want to respond directly to the click, but window should still be brought forward.*/ |
|
kActivateAndHandleClick = 3 /* control wants to respond to the click, but only after the window has been activated.*/ |
|
}; |
|
|
|
typedef UInt32 ClickActivationResult; |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Common data tags for Get/SetControlData */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
|
|
/* |
|
* Discussion: |
|
* Get/SetControlData Common Tags |
|
*/ |
|
enum { |
|
kControlFontStyleTag = FOUR_CHAR_CODE('font'), |
|
kControlKeyFilterTag = FOUR_CHAR_CODE('fltr'), |
|
|
|
/* |
|
* Sent with a pointer to a ControlKind record to be filled in. Only |
|
* valid for GetControlData. |
|
*/ |
|
kControlKindTag = FOUR_CHAR_CODE('kind'), |
|
|
|
/* |
|
* Sent with a pointer to a ControlSize. Only valid with explicitly |
|
* sizeable controls. Currently supported by the Check Box, Combo |
|
* Box, Progress Bar, Indeterminate Progress Bar, Radio Button, Round |
|
* Button, Scroll Bar, Slider and the Tab. Check your return value! |
|
*/ |
|
kControlSizeTag = FOUR_CHAR_CODE('size') |
|
}; |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Feature Bits */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
/* Control feature bits - returned by GetControlFeatures */ |
|
kControlSupportsGhosting = 1 << 0, |
|
kControlSupportsEmbedding = 1 << 1, |
|
kControlSupportsFocus = 1 << 2, |
|
kControlWantsIdle = 1 << 3, |
|
kControlWantsActivate = 1 << 4, |
|
kControlHandlesTracking = 1 << 5, |
|
kControlSupportsDataAccess = 1 << 6, |
|
kControlHasSpecialBackground = 1 << 7, |
|
kControlGetsFocusOnClick = 1 << 8, |
|
kControlSupportsCalcBestRect = 1 << 9, |
|
kControlSupportsLiveFeedback = 1 << 10, |
|
kControlHasRadioBehavior = 1 << 11, /* Available in Appearance 1.0.1 or later*/ |
|
kControlSupportsDragAndDrop = 1 << 12, /* Available in Carbon*/ |
|
kControlAutoToggles = 1 << 14, /* Available in Appearance 1.1 or later*/ |
|
kControlSupportsGetRegion = 1 << 17, /* Available in Appearance 1.1 or later*/ |
|
kControlSupportsFlattening = 1 << 19, /* Available in Carbon*/ |
|
kControlSupportsSetCursor = 1 << 20, /* Available in Carbon*/ |
|
kControlSupportsContextualMenus = 1 << 21, /* Available in Carbon*/ |
|
kControlSupportsClickActivation = 1 << 22, /* Available in Carbon*/ |
|
kControlIdlesWithTimer = 1 << 23 /* Available in Carbon - this bit indicates that the control animates automatically*/ |
|
}; |
|
|
|
/*------------------------------------------------------------------------------------------------------*/ |
|
/* o Control Messages */ |
|
/*------------------------------------------------------------------------------------------------------*/ |
|
enum { |
|
drawCntl = 0, |
|
testCntl = 1, |
|
calcCRgns = 2, |
|
initCntl = 3, /* Param is Collection, result is OSStatus*/ |
|
dispCntl = 4, |
|
posCntl = 5, |
|
thumbCntl = 6, |
|
dragCntl = 7, |
|
autoTrack = 8, |
|
calcCntlRgn = 10, |
|
calcThumbRgn = 11, |
|
drawThumbOutline = 12, |
|
kControlMsgDrawGhost = 13, |
|
kControlMsgCalcBestRect = 14, /* Calculate best fitting rectangle for control*/ |
|
kControlMsgHandleTracking = 15, |
|
kControlMsgFocus = 16, /* param indicates action.*/ |
|
kControlMsgKeyDown = 17, |
|
kControlMsgIdle = 18, |
|
kControlMsgGetFeatures = 19, |
|
kControlMsgSetData = 20, |
|
kControlMsgGetData = 21, |
|
kControlMsgActivate = 22, |
|
kControlMsgSetUpBackground = 23, |
|
kControlMsgCalcValueFromPos = 26, |
|
kControlMsgTestNewMsgSupport = 27, /* See if this control supports new messaging*/ |
|
kControlMsgSubValueChanged = 25, /* Available in Appearance 1.0.1 or later*/ |
|
kControlMsgSubControlAdded = 28, /* Available in Appearance 1.0.1 or later*/ |
|
kControlMsgSubControlRemoved = 29, /* Available in Appearance 1.0.1 or later*/ |
|
kControlMsgApplyTextColor = 30, /* Available in Appearance 1.1 or later*/ |
|
kControlMsgGetRegion = 31, /* Available in Appearance 1.1 or later*/ |
|
kControlMsgFlatten = 32, /* Available in Carbon. Param is Collection.*/ |
|
kControlMsgSetCursor = 33, /* Available in Carbon. Param is ControlSetCursorRec*/ |
|
kControlMsgDragEnter = 38, /* Available in Carbon. Param is DragRef, result is boolean indicating acceptibility of drag.*/ |
|
kControlMsgDragLeave = 39, /* Available in Carbon. As above.*/ |
|
kControlMsgDragWithin = 40, /* Available in Carbon. As above.*/ |
|
kControlMsgDragReceive = 41, /* Available in Carbon. Param is DragRef, result is OSStatus indicating success/failure.*/ |
|
kControlMsgDisplayDebugInfo = 46, /* Available in Carbon on X.*/ |
|
kControlMsgContextualMenuClick = 47, /* Available in Carbon. Param is ControlContextualMenuClickRec*/ |
|
kControlMsgGetClickActivation = 48 /* Available in Carbon. Param is ControlClickActivationRec*/ |
|
}; |
|
|
|
typedef SInt16 ControlDefProcMessage; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Sizes */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
|
|
/* |
|
* Discussion: |
|
* ControlSize values to be used in conjunction with SetControlData |
|
* and the kControlSizeTag. |
|
*/ |
|
enum { |
|
|
|
/* |
|
* Use the control's default drawing variant. This does not apply to |
|
* Scroll Bars, for which Normal is Large. |
|
*/ |
|
kControlSizeNormal = 0, |
|
|
|
/* |
|
* Use the control's small drawing variant. Currently supported by |
|
* the Check Box, Combo Box, Radio Button, Scroll Bar, Slider and Tab |
|
* controls. |
|
*/ |
|
kControlSizeSmall = 1, |
|
|
|
/* |
|
* Use the control's small drawing variant. Currently supported by |
|
* the Indeterminate Progress Bar, Progress Bar and Round Button |
|
* controls. |
|
*/ |
|
kControlSizeLarge = 2, |
|
|
|
/* |
|
* Control drawing variant determined by the control's bounds. This |
|
* ControlSize is only available with Scroll Bars to support their |
|
* legacy behavior of drawing differently within different bounds. |
|
*/ |
|
kControlSizeAuto = 0xFFFF |
|
}; |
|
|
|
typedef UInt16 ControlSize; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Constants for drawCntl message (passed in param) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
kDrawControlEntireControl = 0, |
|
kDrawControlIndicatorOnly = 129 |
|
}; |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Constants for dragCntl message (passed in param) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
kDragControlEntireControl = 0, |
|
kDragControlIndicator = 1 |
|
}; |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Drag Constraint Structure for thumbCntl message (passed in param) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct IndicatorDragConstraint { |
|
Rect limitRect; |
|
Rect slopRect; |
|
DragConstraint axis; |
|
}; |
|
typedef struct IndicatorDragConstraint IndicatorDragConstraint; |
|
typedef IndicatorDragConstraint * IndicatorDragConstraintPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* CDEF should return as result of kControlMsgTestNewMsgSupport */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
kControlSupportsNewMessages = FOUR_CHAR_CODE(' ok ') |
|
}; |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgHandleTracking */ |
|
/* message */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlTrackingRec { |
|
Point startPt; |
|
EventModifiers modifiers; |
|
ControlActionUPP action; |
|
}; |
|
typedef struct ControlTrackingRec ControlTrackingRec; |
|
typedef ControlTrackingRec * ControlTrackingPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgKeyDown message */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlKeyDownRec { |
|
EventModifiers modifiers; |
|
SInt16 keyCode; |
|
SInt16 charCode; |
|
}; |
|
typedef struct ControlKeyDownRec ControlKeyDownRec; |
|
typedef ControlKeyDownRec * ControlKeyDownPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgGetData or */ |
|
/* kControlMsgSetData message */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlDataAccessRec { |
|
ResType tag; |
|
ResType part; |
|
Size size; |
|
Ptr dataPtr; |
|
}; |
|
typedef struct ControlDataAccessRec ControlDataAccessRec; |
|
typedef ControlDataAccessRec * ControlDataAccessPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlCalcBestRect msg */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlCalcSizeRec { |
|
SInt16 height; |
|
SInt16 width; |
|
SInt16 baseLine; |
|
}; |
|
typedef struct ControlCalcSizeRec ControlCalcSizeRec; |
|
typedef ControlCalcSizeRec * ControlCalcSizePtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgSetUpBackground */ |
|
/* message is sent */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlBackgroundRec { |
|
SInt16 depth; |
|
Boolean colorDevice; |
|
}; |
|
typedef struct ControlBackgroundRec ControlBackgroundRec; |
|
typedef ControlBackgroundRec * ControlBackgroundPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgApplyTextColor */ |
|
/* message is sent */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlApplyTextColorRec { |
|
SInt16 depth; |
|
Boolean colorDevice; |
|
Boolean active; |
|
}; |
|
typedef struct ControlApplyTextColorRec ControlApplyTextColorRec; |
|
typedef ControlApplyTextColorRec * ControlApplyTextColorPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when called with the kControlMsgGetRegion */ |
|
/* message is sent */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlGetRegionRec { |
|
RgnHandle region; |
|
ControlPartCode part; |
|
}; |
|
typedef struct ControlGetRegionRec ControlGetRegionRec; |
|
typedef ControlGetRegionRec * ControlGetRegionPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when the kControlMsgSetCursor message is sent */ |
|
/* Only sent on Carbon */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlSetCursorRec { |
|
Point localPoint; |
|
EventModifiers modifiers; |
|
Boolean cursorWasSet; /* your CDEF must set this to true if you set the cursor, or false otherwise*/ |
|
}; |
|
typedef struct ControlSetCursorRec ControlSetCursorRec; |
|
typedef ControlSetCursorRec * ControlSetCursorPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when the kControlMsgContextualMenuClick message */ |
|
/* is sent */ |
|
/* Only sent on Carbon */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlContextualMenuClickRec { |
|
Point localPoint; |
|
Boolean menuDisplayed; /* your CDEF must set this to true if you displayed a menu, or false otherwise*/ |
|
}; |
|
typedef struct ControlContextualMenuClickRec ControlContextualMenuClickRec; |
|
typedef ControlContextualMenuClickRec * ControlContextualMenuClickPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* This structure is passed into a CDEF when the kControlMsgGetClickActivation message */ |
|
/* is sent */ |
|
/* Only sent on Carbon */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlClickActivationRec { |
|
Point localPoint; |
|
EventModifiers modifiers; |
|
ClickActivationResult result; /* your CDEF must pass the desired result back*/ |
|
}; |
|
typedef struct ControlClickActivationRec ControlClickActivationRec; |
|
typedef ControlClickActivationRec * ControlClickActivationPtr; |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o 'CDEF' entrypoint */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
typedef CALLBACK_API( SInt32 , ControlDefProcPtr )(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param); |
|
typedef STACK_UPP_TYPE(ControlDefProcPtr) ControlDefUPP; |
|
/* |
|
* NewControlDefUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlDefUPP ) |
|
NewControlDefUPP(ControlDefProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppControlDefProcInfo = 0x00003BB0 }; /* pascal 4_bytes Func(2_bytes, 4_bytes, 2_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlDefUPP) NewControlDefUPP(ControlDefProcPtr userRoutine) { return (ControlDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlDefProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewControlDefUPP(userRoutine) (ControlDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlDefProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeControlDefUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeControlDefUPP(ControlDefUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeControlDefUPP(ControlDefUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeControlDefUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeControlDefUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( SInt32 ) |
|
InvokeControlDefUPP( |
|
SInt16 varCode, |
|
ControlRef theControl, |
|
ControlDefProcMessage message, |
|
SInt32 param, |
|
ControlDefUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(SInt32) InvokeControlDefUPP(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param, ControlDefUPP userUPP) { return (SInt32)CALL_FOUR_PARAMETER_UPP(userUPP, uppControlDefProcInfo, varCode, theControl, message, param); } |
|
#else |
|
#define InvokeControlDefUPP(varCode, theControl, message, param, userUPP) (SInt32)CALL_FOUR_PARAMETER_UPP((userUPP), uppControlDefProcInfo, (varCode), (theControl), (message), (param)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewControlDefProc(userRoutine) NewControlDefUPP(userRoutine) |
|
#define CallControlDefProc(userRoutine, varCode, theControl, message, param) InvokeControlDefUPP(varCode, theControl, message, param, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* Control Key Filter */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* Certain controls can have a keyfilter attached to them. */ |
|
/* Definition of a key filter for intercepting and possibly changing keystrokes */ |
|
/* which are destined for a control. */ |
|
/* Key Filter Result Codes */ |
|
/* The filter proc should return one of the two constants below. If */ |
|
/* kKeyFilterBlockKey is returned, the key is blocked and never makes it to the */ |
|
/* control. If kKeyFilterPassKey is returned, the control receives the keystroke. */ |
|
enum { |
|
kControlKeyFilterBlockKey = 0, |
|
kControlKeyFilterPassKey = 1 |
|
}; |
|
|
|
typedef SInt16 ControlKeyFilterResult; |
|
typedef CALLBACK_API( ControlKeyFilterResult , ControlKeyFilterProcPtr )(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode, EventModifiers *modifiers); |
|
typedef STACK_UPP_TYPE(ControlKeyFilterProcPtr) ControlKeyFilterUPP; |
|
/* |
|
* NewControlKeyFilterUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlKeyFilterUPP ) |
|
NewControlKeyFilterUPP(ControlKeyFilterProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppControlKeyFilterProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlKeyFilterUPP) NewControlKeyFilterUPP(ControlKeyFilterProcPtr userRoutine) { return (ControlKeyFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlKeyFilterProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewControlKeyFilterUPP(userRoutine) (ControlKeyFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlKeyFilterProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeControlKeyFilterUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeControlKeyFilterUPP(ControlKeyFilterUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeControlKeyFilterUPP(ControlKeyFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeControlKeyFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeControlKeyFilterUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlKeyFilterResult ) |
|
InvokeControlKeyFilterUPP( |
|
ControlRef theControl, |
|
SInt16 * keyCode, |
|
SInt16 * charCode, |
|
EventModifiers * modifiers, |
|
ControlKeyFilterUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlKeyFilterResult) InvokeControlKeyFilterUPP(ControlRef theControl, SInt16 * keyCode, SInt16 * charCode, EventModifiers * modifiers, ControlKeyFilterUPP userUPP) { return (ControlKeyFilterResult)CALL_FOUR_PARAMETER_UPP(userUPP, uppControlKeyFilterProcInfo, theControl, keyCode, charCode, modifiers); } |
|
#else |
|
#define InvokeControlKeyFilterUPP(theControl, keyCode, charCode, modifiers, userUPP) (ControlKeyFilterResult)CALL_FOUR_PARAMETER_UPP((userUPP), uppControlKeyFilterProcInfo, (theControl), (keyCode), (charCode), (modifiers)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewControlKeyFilterProc(userRoutine) NewControlKeyFilterUPP(userRoutine) |
|
#define CallControlKeyFilterProc(userRoutine, theControl, keyCode, charCode, modifiers) InvokeControlKeyFilterUPP(theControl, keyCode, charCode, modifiers, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o DragGrayRgn Constatns */ |
|
/* */ |
|
/* For DragGrayRgnUPP used in TrackControl() */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
noConstraint = kNoConstraint, |
|
hAxisOnly = 1, |
|
vAxisOnly = 2 |
|
}; |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Creation/Deletion/Persistence */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* CreateCustomControl is only available as part of Carbon */ |
|
enum { |
|
kControlDefProcPtr = 0, /* raw proc-ptr based access*/ |
|
kControlDefObjectClass = 1 /* event-based definition (Mac OS X only)*/ |
|
}; |
|
|
|
typedef UInt32 ControlDefType; |
|
struct ControlDefSpec { |
|
ControlDefType defType; |
|
union { |
|
ControlDefUPP defProc; |
|
void * classRef; |
|
} u; |
|
}; |
|
typedef struct ControlDefSpec ControlDefSpec; |
|
/* |
|
* CreateCustomControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
CreateCustomControl( |
|
WindowRef owningWindow, |
|
const Rect * contBounds, |
|
const ControlDefSpec * def, |
|
Collection initData, |
|
ControlRef * outControl); |
|
|
|
|
|
/* |
|
* NewControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlRef ) |
|
NewControl( |
|
WindowRef owningWindow, |
|
const Rect * boundsRect, |
|
ConstStr255Param controlTitle, |
|
Boolean initiallyVisible, |
|
SInt16 initialValue, |
|
SInt16 minimumValue, |
|
SInt16 maximumValue, |
|
SInt16 procID, |
|
SInt32 controlReference) ONEWORDINLINE(0xA954); |
|
|
|
|
|
/* |
|
* GetNewControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlRef ) |
|
GetNewControl( |
|
SInt16 resourceID, |
|
WindowRef owningWindow) ONEWORDINLINE(0xA9BE); |
|
|
|
|
|
/* |
|
* DisposeControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
DisposeControl(ControlRef theControl) ONEWORDINLINE(0xA955); |
|
|
|
|
|
/* |
|
* KillControls() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
KillControls(WindowRef theWindow) ONEWORDINLINE(0xA956); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Definition Registration */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
typedef CALLBACK_API( OSStatus , ControlCNTLToCollectionProcPtr )(const Rect *bounds, SInt16 value, Boolean visible, SInt16 max, SInt16 min, SInt16 procID, SInt32 refCon, ConstStr255Param title, Collection collection); |
|
typedef STACK_UPP_TYPE(ControlCNTLToCollectionProcPtr) ControlCNTLToCollectionUPP; |
|
/* |
|
* NewControlCNTLToCollectionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlCNTLToCollectionUPP ) |
|
NewControlCNTLToCollectionUPP(ControlCNTLToCollectionProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppControlCNTLToCollectionProcInfo = 0x00FEA6F0 }; /* pascal 4_bytes Func(4_bytes, 2_bytes, 1_byte, 2_bytes, 2_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlCNTLToCollectionUPP) NewControlCNTLToCollectionUPP(ControlCNTLToCollectionProcPtr userRoutine) { return (ControlCNTLToCollectionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlCNTLToCollectionProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewControlCNTLToCollectionUPP(userRoutine) (ControlCNTLToCollectionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlCNTLToCollectionProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeControlCNTLToCollectionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeControlCNTLToCollectionUPP(ControlCNTLToCollectionUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeControlCNTLToCollectionUPP(ControlCNTLToCollectionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeControlCNTLToCollectionUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeControlCNTLToCollectionUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
InvokeControlCNTLToCollectionUPP( |
|
const Rect * bounds, |
|
SInt16 value, |
|
Boolean visible, |
|
SInt16 max, |
|
SInt16 min, |
|
SInt16 procID, |
|
SInt32 refCon, |
|
ConstStr255Param title, |
|
Collection collection, |
|
ControlCNTLToCollectionUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSStatus) InvokeControlCNTLToCollectionUPP(const Rect * bounds, SInt16 value, Boolean visible, SInt16 max, SInt16 min, SInt16 procID, SInt32 refCon, ConstStr255Param title, Collection collection, ControlCNTLToCollectionUPP userUPP) { return (OSStatus)CALL_NINE_PARAMETER_UPP(userUPP, uppControlCNTLToCollectionProcInfo, bounds, value, visible, max, min, procID, refCon, title, collection); } |
|
#else |
|
#define InvokeControlCNTLToCollectionUPP(bounds, value, visible, max, min, procID, refCon, title, collection, userUPP) (OSStatus)CALL_NINE_PARAMETER_UPP((userUPP), uppControlCNTLToCollectionProcInfo, (bounds), (value), (visible), (max), (min), (procID), (refCon), (title), (collection)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewControlCNTLToCollectionProc(userRoutine) NewControlCNTLToCollectionUPP(userRoutine) |
|
#define CallControlCNTLToCollectionProc(userRoutine, bounds, value, visible, max, min, procID, refCon, title, collection) InvokeControlCNTLToCollectionUPP(bounds, value, visible, max, min, procID, refCon, title, collection, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/* |
|
* RegisterControlDefinition() |
|
* |
|
* Summary: |
|
* Associates or dissociates a control definition with a virtual |
|
* CDEF resource ID. |
|
* |
|
* Discussion: |
|
* In GetNewControl or NewControl on Carbon, the Control Manager |
|
* needs to know how to map the procID to a ControlDefSpec. With |
|
* RegisterControlDefinition, your application can inform the |
|
* Control Manager which ControlDefSpec to call when it sees a |
|
* request to use a 'CDEF' of a particular resource ID. Since custom |
|
* control definitions receive their initialization data in a |
|
* Collection passed in the 'param' parameter, you must also provide |
|
* a procedure to convert the bounds, min, max, and other parameters |
|
* to NewControl into a Collection. If you don't provide a |
|
* conversion proc, your control will receive an empty collection |
|
* when it is sent the initialization message. If you want the |
|
* value, min, visibility, etc. to be given to the control, you must |
|
* add the appropriate tagged data to the collection. See the |
|
* Control Collection Tags above. If you want to unregister a |
|
* ControlDefSpec that you have already registered, call |
|
* RegisterControlDefinition with the same CDEF resource ID, but |
|
* pass NULL for the inControlDef parameter. In this situation, |
|
* inConversionProc is effectively ignored. |
|
* |
|
* Parameters: |
|
* |
|
* inCDEFResID: |
|
* The virtual CDEF resource ID to which you'd like to associate |
|
* or dissociate the control definition. |
|
* |
|
* inControlDef: |
|
* A pointer to a ControlDefSpec which represents the control |
|
* definition you want to register, or NULL if you are attempting |
|
* to unregister a control definition. |
|
* |
|
* inConversionProc: |
|
* The conversion proc which will translate the NewControl |
|
* parameters into a Collection. |
|
* |
|
* Result: |
|
* An OSStatus code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
RegisterControlDefinition( |
|
SInt16 inCDEFResID, |
|
const ControlDefSpec * inControlDef, |
|
ControlCNTLToCollectionUPP inConversionProc); |
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Visible State */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* HiliteControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
HiliteControl( |
|
ControlRef theControl, |
|
ControlPartCode hiliteState) ONEWORDINLINE(0xA95D); |
|
|
|
|
|
/* |
|
* ShowControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
ShowControl(ControlRef theControl) ONEWORDINLINE(0xA957); |
|
|
|
|
|
/* |
|
* HideControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
HideControl(ControlRef theControl) ONEWORDINLINE(0xA958); |
|
|
|
|
|
|
|
/* following state routines available only with Appearance 1.0 and later*/ |
|
/* |
|
* IsControlActive() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Boolean ) |
|
IsControlActive(ControlRef inControl) THREEWORDINLINE(0x303C, 0x0005, 0xAA73); |
|
|
|
|
|
/* |
|
* IsControlVisible() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Boolean ) |
|
IsControlVisible(ControlRef inControl) THREEWORDINLINE(0x303C, 0x0006, 0xAA73); |
|
|
|
|
|
/* |
|
* ActivateControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ActivateControl(ControlRef inControl) THREEWORDINLINE(0x303C, 0x0007, 0xAA73); |
|
|
|
|
|
/* |
|
* DeactivateControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
DeactivateControl(ControlRef inControl) THREEWORDINLINE(0x303C, 0x0008, 0xAA73); |
|
|
|
|
|
/* |
|
* SetControlVisibility() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetControlVisibility( |
|
ControlRef inControl, |
|
Boolean inIsVisible, |
|
Boolean inDoDraw) THREEWORDINLINE(0x303C, 0x001E, 0xAA73); |
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Imaging */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* DrawControls() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
DrawControls(WindowRef theWindow) ONEWORDINLINE(0xA969); |
|
|
|
|
|
/* |
|
* Draw1Control() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
Draw1Control(ControlRef theControl) ONEWORDINLINE(0xA96D); |
|
|
|
|
|
#define DrawOneControl(theControl) Draw1Control(theControl) |
|
|
|
/* |
|
* UpdateControls() |
|
* |
|
* Summary: |
|
* Redraws the controls that intersect a specified region in a |
|
* window. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window whose controls to redraw. |
|
* |
|
* inUpdateRegion: |
|
* The region (in local coordinates) describing which controls to |
|
* redraw. In Mac OS 10.1 and later, and in CarbonLib 1.5 and |
|
* later, you may pass NULL for this parameter to redraw the |
|
* controls intersecting the visible region of the window. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
UpdateControls( |
|
WindowRef inWindow, |
|
RgnHandle inUpdateRegion) /* can be NULL */ ONEWORDINLINE(0xA953); |
|
|
|
|
|
|
|
/* following imaging routines available only with Appearance 1.0 and later*/ |
|
/* |
|
* GetBestControlRect() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetBestControlRect( |
|
ControlRef inControl, |
|
Rect * outRect, |
|
SInt16 * outBaseLineOffset) THREEWORDINLINE(0x303C, 0x001B, 0xAA73); |
|
|
|
|
|
/* |
|
* SetControlFontStyle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetControlFontStyle( |
|
ControlRef inControl, |
|
const ControlFontStyleRec * inStyle) THREEWORDINLINE(0x303C, 0x001C, 0xAA73); |
|
|
|
|
|
/* |
|
* DrawControlInCurrentPort() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
DrawControlInCurrentPort(ControlRef inControl) THREEWORDINLINE(0x303C, 0x0018, 0xAA73); |
|
|
|
|
|
/* |
|
* SetUpControlBackground() |
|
* |
|
* Summary: |
|
* Applies the proper background color for the given control to the |
|
* current port. |
|
* |
|
* Discussion: |
|
* An embedding-savvy control which erases before drawing must |
|
* ensure that its background color properly matches the body color |
|
* of any parent controls on top of which it draws. This routine |
|
* asks the Control Manager to determine and apply the proper |
|
* background color to the current port. If a ControlColorProc has |
|
* been provided for the given control, the proc will be called to |
|
* set up the background color. If no proc exists, or if the proc |
|
* returns a value other than noErr, the Control Manager ascends the |
|
* parent chain for the given control looking for a control which |
|
* has a special background (see the kControlHasSpecialBackground |
|
* feature bit). The first such parent is asked to set up the |
|
* background color (see the kControlMsgSetUpBackground message). If |
|
* no such parent exists, the Control Manager applies any ThemeBrush |
|
* which has been associated with the owning window (see |
|
* SetThemeWindowBackground). Available in Appearance 1.0 (Mac OS |
|
* 8), CarbonLib 1.0, Mac OS X, and later. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The ControlRef that wants to erase. |
|
* |
|
* inDepth: |
|
* A short integer indicating the color depth of the device onto |
|
* which drawing will take place. |
|
* |
|
* inIsColorDevice: |
|
* A Boolean indicating whether the draw device is a color device. |
|
* |
|
* Result: |
|
* An OSStatus code indicating success or failure. The most likely |
|
* error is a controlHandleInvalidErr, resulting from a bad |
|
* ControlRef. Any non-noErr result indicates that the color set up |
|
* failed, and that the caller should probably give up its attempt |
|
* to draw. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetUpControlBackground( |
|
ControlRef inControl, |
|
SInt16 inDepth, |
|
Boolean inIsColorDevice) THREEWORDINLINE(0x303C, 0x001D, 0xAA73); |
|
|
|
|
|
/* |
|
* SetUpControlTextColor() |
|
* |
|
* Summary: |
|
* Applies the proper text color for the given control to the |
|
* current port. |
|
* |
|
* Discussion: |
|
* An embedding-savvy control which draws text must ensure that its |
|
* text color properly contrasts the background on which it draws. |
|
* This routine asks the Control Manager to determine and apply the |
|
* proper text color to the current port. If a ControlColorProc has |
|
* been provided for the given control, the proc will be called to |
|
* set up the text color. If no proc exists, or if the proc returns |
|
* a value other than noErr, the Control Manager ascends the parent |
|
* chain for the given control looking for a control which has a |
|
* special background (see the kControlHasSpecialBackground feature |
|
* bit). The first such parent is asked to set up the text color |
|
* (see the kControlMsgApplyTextColor message). If no such parent |
|
* exists, the Control Manager chooses a text color which contrasts |
|
* any ThemeBrush which has been associated with the owning window |
|
* (see SetThemeWindowBackground). Available in Appearance 1.1 (Mac |
|
* OS 8.5), CarbonLib 1.0, Mac OS X, and later. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The ControlRef that wants to draw text. |
|
* |
|
* inDepth: |
|
* A short integer indicating the color depth of the device onto |
|
* which drawing will take place. |
|
* |
|
* inIsColorDevice: |
|
* A Boolean indicating whether the draw device is a color device. |
|
* |
|
* Result: |
|
* An OSStatus code indicating success or failure. The most likely |
|
* error is a controlHandleInvalidErr, resulting from a bad |
|
* ControlRef. Any non-noErr result indicates that the color set up |
|
* failed, and that the caller should probably give up its attempt |
|
* to draw. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetUpControlTextColor( |
|
ControlRef inControl, |
|
SInt16 inDepth, |
|
Boolean inIsColorDevice); |
|
|
|
|
|
|
|
|
|
/* |
|
* ControlColorProcPtr |
|
* |
|
* Discussion: |
|
* Callback allowing clients to specify/override the background |
|
* color and text color that a Control will use during drawing. Your |
|
* procedure should make the color changes to the current port. See |
|
* SetControlColorProc, SetUpControlBackground, and |
|
* SetUpControlTextColor for more information. Available on Mac OS |
|
* 8.5, CarbonLib 1.1, Mac OS X, and later. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* A reference to the Control for whom your proc is setting up |
|
* colors. |
|
* |
|
* inMessage: |
|
* A ControlDefProcMessage indicating what sort of color your |
|
* procedure should set up. It will be either |
|
* kControlMsgApplyTextColor or kControlMsgSetUpBackground. |
|
* kControlMsgApplyTextColor is a request to set up the |
|
* appropriate text color (by setting the current port's |
|
* foreground color, pen information, etc.). |
|
* kControlMsgSetUpBackground is a request to set up the |
|
* appropriate background color (the current port's background |
|
* color, pattern, etc.). |
|
* |
|
* inDrawDepth: |
|
* A short integer indicating the bit depth of the device into |
|
* which the Control is drawing. The bit depth is typically passed |
|
* in as a result of someone someone trying to draw properly |
|
* across multiple monitors with different bit depths. If your |
|
* procedure wants to handle proper color set up based on bit |
|
* depth, it should use this parameter to help decide what color |
|
* to apply. |
|
* |
|
* inDrawInColor: |
|
* A Boolean indicating whether or not the device that the Control |
|
* is drawing into is a color device. The value is typically |
|
* passed in as a result of someone trying to draw properly across |
|
* multiple monitors which may or may not be color devices. If |
|
* your procedure wants to handle proper color set up for both |
|
* color and grayscale devices, it should use this parameter to |
|
* help decide what color to apply. |
|
* |
|
* Result: |
|
* An OSStatus code indicating success or failure. Returning noErr |
|
* is an indication that your proc completely handled the color set |
|
* up. If you return any other value, the Control Manager will fall |
|
* back to the normal color set up mechanism. |
|
*/ |
|
typedef CALLBACK_API( OSStatus , ControlColorProcPtr )(ControlRef inControl, SInt16 inMessage, SInt16 inDrawDepth, Boolean inDrawInColor); |
|
typedef STACK_UPP_TYPE(ControlColorProcPtr) ControlColorUPP; |
|
/* |
|
* NewControlColorUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.1 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( ControlColorUPP ) |
|
NewControlColorUPP(ControlColorProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppControlColorProcInfo = 0x00001AF0 }; /* pascal 4_bytes Func(4_bytes, 2_bytes, 2_bytes, 1_byte) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(ControlColorUPP) NewControlColorUPP(ControlColorProcPtr userRoutine) { return (ControlColorUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlColorProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewControlColorUPP(userRoutine) (ControlColorUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlColorProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeControlColorUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.1 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeControlColorUPP(ControlColorUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeControlColorUPP(ControlColorUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeControlColorUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeControlColorUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.1 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
InvokeControlColorUPP( |
|
ControlRef inControl, |
|
SInt16 inMessage, |
|
SInt16 inDrawDepth, |
|
Boolean inDrawInColor, |
|
ControlColorUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSStatus) InvokeControlColorUPP(ControlRef inControl, SInt16 inMessage, SInt16 inDrawDepth, Boolean inDrawInColor, ControlColorUPP userUPP) { return (OSStatus)CALL_FOUR_PARAMETER_UPP(userUPP, uppControlColorProcInfo, inControl, inMessage, inDrawDepth, inDrawInColor); } |
|
#else |
|
#define InvokeControlColorUPP(inControl, inMessage, inDrawDepth, inDrawInColor, userUPP) (OSStatus)CALL_FOUR_PARAMETER_UPP((userUPP), uppControlColorProcInfo, (inControl), (inMessage), (inDrawDepth), (inDrawInColor)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewControlColorProc(userRoutine) NewControlColorUPP(userRoutine) |
|
#define CallControlColorProc(userRoutine, inControl, inMessage, inDrawDepth, inDrawInColor) InvokeControlColorUPP(inControl, inMessage, inDrawDepth, inDrawInColor, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/* |
|
* SetControlColorProc() |
|
* |
|
* Summary: |
|
* Associates a ControlColorUPP with a given Control, thereby |
|
* allowing you to bypass the embedding hierarchy-based color setup |
|
* of SetUpControlBackground/SetUpControlTextColor and replace it |
|
* with your own. |
|
* |
|
* Discussion: |
|
* Before an embedded Control can erase, it calls |
|
* SetUpControlBackground to have its background color set up by any |
|
* parent controls. Similarly, any Control which draws text calls |
|
* SetUpControlTextColor to have the appropriate text color set up. |
|
* This allows certain controls (such as Tabs and Placards) to offer |
|
* special backgrounds and text colors for any child controls. By |
|
* default, the SetUp routines only move up the Control Manager |
|
* embedding hierarchy looking for a parent which has a special |
|
* background. This is fine in a plain vanilla embedding case, but |
|
* many application frameworks find it troublesome; if there are |
|
* interesting views between two Controls in the embedding |
|
* hierarchy, the framework needs to be in charge of the background |
|
* and text colors, otherwise drawing defects will occur. You can |
|
* only associate a single color proc with a given ControlRef. |
|
* Available on Mac OS 8.5, CarbonLib 1.1, Mac OS X, and later. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The ControlRef with whom the color proc should be associated. |
|
* |
|
* inProc: |
|
* The color proc to associate with the ControlRef. If you pass |
|
* NULL, the ControlRef will be dissociated from any previously |
|
* installed color proc. |
|
* |
|
* Result: |
|
* An OSStatus code indicating success or failure. The most likely |
|
* error is a controlHandleInvalidErr resulting from a bad |
|
* ControlRef. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.1 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
SetControlColorProc( |
|
ControlRef inControl, |
|
ControlColorUPP inProc); |
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Mousing */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
NOTE ON CONTROL ACTION PROCS |
|
|
|
When using the TrackControl() call when tracking an indicator, the actionProc parameter |
|
(type ControlActionUPP) should be replaced by a parameter of type DragGrayRgnUPP |
|
(see Quickdraw.h). |
|
|
|
If, however, you are using the live feedback variants of scroll bars or sliders, you |
|
must pass a ControlActionUPP in when tracking the indicator as well. This functionality |
|
is available in Appearance 1.0 or later. |
|
*/ |
|
/* |
|
* TrackControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlPartCode ) |
|
TrackControl( |
|
ControlRef theControl, |
|
Point startPoint, |
|
ControlActionUPP actionProc) /* can be NULL */ ONEWORDINLINE(0xA968); |
|
|
|
|
|
/* |
|
* DragControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
DragControl( |
|
ControlRef theControl, |
|
Point startPoint, |
|
const Rect * limitRect, |
|
const Rect * slopRect, |
|
DragConstraint axis) ONEWORDINLINE(0xA967); |
|
|
|
|
|
/* |
|
* TestControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlPartCode ) |
|
TestControl( |
|
ControlRef theControl, |
|
Point testPoint) ONEWORDINLINE(0xA966); |
|
|
|
|
|
/* |
|
* FindControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlPartCode ) |
|
FindControl( |
|
Point testPoint, |
|
WindowRef theWindow, |
|
ControlRef * theControl) ONEWORDINLINE(0xA96C); |
|
|
|
|
|
/* The following mousing routines available only with Appearance 1.0 and later */ |
|
/* */ |
|
/* HandleControlClick is preferable to TrackControl when running under */ |
|
/* Appearance 1.0 as you can pass in modifiers, which some of the new controls */ |
|
/* use, such as edit text and list boxes. */ |
|
/* NOTE: Passing NULL for the outPart parameter of FindControlUnderMouse is only*/ |
|
/* supported in systems later than 10.1.x */ |
|
/* |
|
* FindControlUnderMouse() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlRef ) |
|
FindControlUnderMouse( |
|
Point inWhere, |
|
WindowRef inWindow, |
|
ControlPartCode * outPart) /* can be NULL */ THREEWORDINLINE(0x303C, 0x0009, 0xAA73); |
|
|
|
|
|
/* |
|
* HandleControlClick() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlPartCode ) |
|
HandleControlClick( |
|
ControlRef inControl, |
|
Point inWhere, |
|
EventModifiers inModifiers, |
|
ControlActionUPP inAction) /* can be NULL */ THREEWORDINLINE(0x303C, 0x000A, 0xAA73); |
|
|
|
|
|
/* Contextual Menu support in the Control Manager is only available on Carbon. */ |
|
/* If the control didn't display a contextual menu (possibly because the point */ |
|
/* was in a non-interesting part), the menuDisplayed output parameter will be */ |
|
/* false. If the control did display a menu, menuDisplayed will be true. */ |
|
/* This in on Carbon only */ |
|
/* |
|
* HandleControlContextualMenuClick() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
HandleControlContextualMenuClick( |
|
ControlRef inControl, |
|
Point inWhere, |
|
Boolean * menuDisplayed); |
|
|
|
|
|
/* Some complex controls (like Data Browser) require proper sequencing of */ |
|
/* window activation and click processing. In some cases, the control might */ |
|
/* want the window to be left inactive yet still handle the click, or vice- */ |
|
/* versa. The GetControlClickActivation routine lets a control client ask the */ |
|
/* control how it wishes to behave for a particular click. */ |
|
/* This in on Carbon only. */ |
|
/* |
|
* GetControlClickActivation() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlClickActivation( |
|
ControlRef inControl, |
|
Point inWhere, |
|
EventModifiers inModifiers, |
|
ClickActivationResult * outResult); |
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Events (available only with Appearance 1.0 and later) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* HandleControlKey() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlPartCode ) |
|
HandleControlKey( |
|
ControlRef inControl, |
|
SInt16 inKeyCode, |
|
SInt16 inCharCode, |
|
EventModifiers inModifiers) THREEWORDINLINE(0x303C, 0x000B, 0xAA73); |
|
|
|
|
|
/* |
|
* IdleControls() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
IdleControls(WindowRef inWindow) THREEWORDINLINE(0x303C, 0x000C, 0xAA73); |
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Mouse Tracking (available with Carbon) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* The HandleControlSetCursor routine requests that a given control set the cursor to */ |
|
/* something appropriate based on the mouse location. */ |
|
/* If the control didn't want to set the cursor (because the point was in a */ |
|
/* non-interesting part), the cursorWasSet output parameter will be false. If the */ |
|
/* control did set the cursor, cursorWasSet will be true. */ |
|
/* Carbon only. */ |
|
/* |
|
* HandleControlSetCursor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
HandleControlSetCursor( |
|
ControlRef control, |
|
Point localPoint, |
|
EventModifiers modifiers, |
|
Boolean * cursorWasSet); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Positioning */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* MoveControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
MoveControl( |
|
ControlRef theControl, |
|
SInt16 h, |
|
SInt16 v) ONEWORDINLINE(0xA959); |
|
|
|
|
|
/* |
|
* SizeControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SizeControl( |
|
ControlRef theControl, |
|
SInt16 w, |
|
SInt16 h) ONEWORDINLINE(0xA95C); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Title */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* SetControlTitle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlTitle( |
|
ControlRef theControl, |
|
ConstStr255Param title) ONEWORDINLINE(0xA95F); |
|
|
|
|
|
/* |
|
* GetControlTitle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
GetControlTitle( |
|
ControlRef theControl, |
|
Str255 title) ONEWORDINLINE(0xA95E); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Value */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* GetControlValue() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt16 ) |
|
GetControlValue(ControlRef theControl) ONEWORDINLINE(0xA960); |
|
|
|
|
|
/* |
|
* SetControlValue() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlValue( |
|
ControlRef theControl, |
|
SInt16 newValue) ONEWORDINLINE(0xA963); |
|
|
|
|
|
/* |
|
* GetControlMinimum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt16 ) |
|
GetControlMinimum(ControlRef theControl) ONEWORDINLINE(0xA961); |
|
|
|
|
|
/* |
|
* SetControlMinimum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlMinimum( |
|
ControlRef theControl, |
|
SInt16 newMinimum) ONEWORDINLINE(0xA964); |
|
|
|
|
|
/* |
|
* GetControlMaximum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt16 ) |
|
GetControlMaximum(ControlRef theControl) ONEWORDINLINE(0xA962); |
|
|
|
|
|
/* |
|
* SetControlMaximum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlMaximum( |
|
ControlRef theControl, |
|
SInt16 newMaximum) ONEWORDINLINE(0xA965); |
|
|
|
|
|
|
|
/* proportional scrolling/32-bit value support is new with Appearance 1.1*/ |
|
|
|
/* |
|
* GetControlViewSize() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
GetControlViewSize(ControlRef theControl); |
|
|
|
|
|
/* |
|
* SetControlViewSize() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlViewSize( |
|
ControlRef theControl, |
|
SInt32 newViewSize); |
|
|
|
|
|
/* |
|
* GetControl32BitValue() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
GetControl32BitValue(ControlRef theControl); |
|
|
|
|
|
/* |
|
* SetControl32BitValue() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControl32BitValue( |
|
ControlRef theControl, |
|
SInt32 newValue); |
|
|
|
|
|
/* |
|
* GetControl32BitMaximum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
GetControl32BitMaximum(ControlRef theControl); |
|
|
|
|
|
/* |
|
* SetControl32BitMaximum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControl32BitMaximum( |
|
ControlRef theControl, |
|
SInt32 newMaximum); |
|
|
|
|
|
/* |
|
* GetControl32BitMinimum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
GetControl32BitMinimum(ControlRef theControl); |
|
|
|
|
|
/* |
|
* SetControl32BitMinimum() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControl32BitMinimum( |
|
ControlRef theControl, |
|
SInt32 newMinimum); |
|
|
|
|
|
/* |
|
IsValidControlHandle will tell you if the handle you pass in belongs to a control |
|
the Control Manager knows about. It does not sanity check the data in the control. |
|
*/ |
|
|
|
/* |
|
* IsValidControlHandle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Boolean ) |
|
IsValidControlHandle(ControlRef theControl); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control IDs */ |
|
/* Carbon only. */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
struct ControlID { |
|
OSType signature; |
|
SInt32 id; |
|
}; |
|
typedef struct ControlID ControlID; |
|
/* |
|
* SetControlID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
SetControlID( |
|
ControlRef inControl, |
|
const ControlID * inID); |
|
|
|
|
|
/* |
|
* GetControlID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlID( |
|
ControlRef inControl, |
|
ControlID * outID); |
|
|
|
|
|
/* |
|
* GetControlByID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlByID( |
|
WindowRef inWindow, |
|
const ControlID * inID, |
|
ControlRef * outControl); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Command IDs */ |
|
/* Carbon only. */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Identification */ |
|
/* Carbon only. */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Properties */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
kControlPropertyPersistent = 0x00000001 /* whether this property gets saved when flattening the control*/ |
|
}; |
|
|
|
/* |
|
* GetControlProperty() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlProperty( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag, |
|
UInt32 bufferSize, |
|
UInt32 * actualSize, /* can be NULL */ |
|
void * propertyBuffer); |
|
|
|
|
|
/* |
|
* GetControlPropertySize() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlPropertySize( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag, |
|
UInt32 * size); |
|
|
|
|
|
/* |
|
* SetControlProperty() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
SetControlProperty( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag, |
|
UInt32 propertySize, |
|
const void * propertyData); |
|
|
|
|
|
/* |
|
* RemoveControlProperty() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
RemoveControlProperty( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag); |
|
|
|
|
|
/* |
|
* GetControlPropertyAttributes() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlPropertyAttributes( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag, |
|
UInt32 * attributes); |
|
|
|
|
|
/* |
|
* ChangeControlPropertyAttributes() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
ChangeControlPropertyAttributes( |
|
ControlRef control, |
|
OSType propertyCreator, |
|
OSType propertyTag, |
|
UInt32 attributesToSet, |
|
UInt32 attributesToClear); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Regions (Appearance 1.1 or later) */ |
|
/* */ |
|
/* See the discussion on meta-parts in this header for more information */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* GetControlRegion() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 8.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
GetControlRegion( |
|
ControlRef inControl, |
|
ControlPartCode inPart, |
|
RgnHandle outRegion); |
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Variant */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* GetControlVariant() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlVariant ) |
|
GetControlVariant(ControlRef theControl) ONEWORDINLINE(0xA809); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Action */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* SetControlAction() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlAction( |
|
ControlRef theControl, |
|
ControlActionUPP actionProc) ONEWORDINLINE(0xA96B); |
|
|
|
|
|
/* |
|
* GetControlAction() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( ControlActionUPP ) |
|
GetControlAction(ControlRef theControl) ONEWORDINLINE(0xA96A); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Accessors */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* SetControlReference() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlReference( |
|
ControlRef theControl, |
|
SInt32 data) ONEWORDINLINE(0xA95B); |
|
|
|
|
|
/* |
|
* GetControlReference() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
GetControlReference(ControlRef theControl) ONEWORDINLINE(0xA95A); |
|
|
|
|
|
#if !OPAQUE_TOOLBOX_STRUCTS |
|
#if CALL_NOT_IN_CARBON |
|
/* |
|
* GetAuxiliaryControlRecord() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( Boolean ) |
|
GetAuxiliaryControlRecord( |
|
ControlRef theControl, |
|
AuxCtlHandle * acHndl) ONEWORDINLINE(0xAA44); |
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
#endif /* !OPAQUE_TOOLBOX_STRUCTS */ |
|
|
|
#if CALL_NOT_IN_CARBON |
|
/* |
|
* SetControlColor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlColor( |
|
ControlRef theControl, |
|
CCTabHandle newColorTable) ONEWORDINLINE(0xAA43); |
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Hierarchy (Appearance 1.0 and later only) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/* |
|
* SendControlMessage() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( SInt32 ) |
|
SendControlMessage( |
|
ControlRef inControl, |
|
SInt16 inMessage, |
|
void * inParam) THREEWORDINLINE(0x303C, 0xFFFE, 0xAA73); |
|
|
|
|
|
/* |
|
* DumpControlHierarchy() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
DumpControlHierarchy( |
|
WindowRef inWindow, |
|
const FSSpec * inDumpFile) THREEWORDINLINE(0x303C, 0xFFFF, 0xAA73); |
|
|
|
|
|
/* |
|
* CreateRootControl() |
|
* |
|
* Summary: |
|
* Creates a new root control for a window. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window for which to create a root control. |
|
* |
|
* outControl: |
|
* On exit, contains the window's root control. In Mac OS 10.1 and |
|
* CarbonLib 1.5 and later, this parameter may be NULL if you |
|
* don't need the ControlRef. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. errRootAlreadyExists |
|
* is returned if the window already has a root control. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
CreateRootControl( |
|
WindowRef inWindow, |
|
ControlRef * outControl) /* can be NULL */ THREEWORDINLINE(0x303C, 0x0001, 0xAA73); |
|
|
|
|
|
/* |
|
* GetRootControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetRootControl( |
|
WindowRef inWindow, |
|
ControlRef * outControl) THREEWORDINLINE(0x303C, 0x0002, 0xAA73); |
|
|
|
|
|
/* |
|
* EmbedControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
EmbedControl( |
|
ControlRef inControl, |
|
ControlRef inContainer) THREEWORDINLINE(0x303C, 0x0003, 0xAA73); |
|
|
|
|
|
/* |
|
* AutoEmbedControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
AutoEmbedControl( |
|
ControlRef inControl, |
|
WindowRef inWindow) THREEWORDINLINE(0x303C, 0x0004, 0xAA73); |
|
|
|
|
|
/* |
|
* GetSuperControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetSuperControl( |
|
ControlRef inControl, |
|
ControlRef * outParent) THREEWORDINLINE(0x303C, 0x0015, 0xAA73); |
|
|
|
|
|
/* |
|
* CountSubControls() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
CountSubControls( |
|
ControlRef inControl, |
|
UInt16 * outNumChildren) THREEWORDINLINE(0x303C, 0x0016, 0xAA73); |
|
|
|
|
|
/* |
|
* GetIndexedSubControl() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetIndexedSubControl( |
|
ControlRef inControl, |
|
UInt16 inIndex, |
|
ControlRef * outSubControl) THREEWORDINLINE(0x303C, 0x0017, 0xAA73); |
|
|
|
|
|
/* |
|
* SetControlSupervisor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetControlSupervisor( |
|
ControlRef inControl, |
|
ControlRef inBoss) THREEWORDINLINE(0x303C, 0x001A, 0xAA73); |
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Keyboard Focus (available only with Appearance 1.0 and later) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* |
|
* GetKeyboardFocus() |
|
* |
|
* Discussion: |
|
* Passes back the currently focused control within the given window. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window to get the focus of. |
|
* |
|
* outControl: |
|
* On output, this will contain the ControlRef that is currently |
|
* focused in the given window. If there is no currently focused |
|
* control, outControl will contain NULL. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetKeyboardFocus( |
|
WindowRef inWindow, |
|
ControlRef * outControl) THREEWORDINLINE(0x303C, 0x000D, 0xAA73); |
|
|
|
|
|
/* |
|
* SetKeyboardFocus() |
|
* |
|
* Discussion: |
|
* Focuses the given part of the given control in a particular |
|
* window. If another control is currently focused in the window, |
|
* focus will be removed from the other control before focus is |
|
* given to the desired control. SetKeyboardFocus respects the full |
|
* keyboard navigation mode. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window which contains the control you want to focus. If the |
|
* window does not contain the control, an error will be returned. |
|
* |
|
* inControl: |
|
* The control you want to focus. |
|
* |
|
* inPart: |
|
* The part of the control you wish to focus. You may pass |
|
* kControlFocusNoPart to clear the focus in the given control. |
|
* You may pass kControlFocusNextPart or kControlFocusPrevPart to |
|
* move the focus within the given control. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetKeyboardFocus( |
|
WindowRef inWindow, |
|
ControlRef inControl, |
|
ControlFocusPart inPart) THREEWORDINLINE(0x303C, 0x000E, 0xAA73); |
|
|
|
|
|
/* |
|
* AdvanceKeyboardFocus() |
|
* |
|
* Discussion: |
|
* Advances the focus to the next most appropriate control. Unless |
|
* overriden in some fashion (either by overriding certain carbon |
|
* events or using the HIViewSetNextFocus API), the Toolbox will use |
|
* a spacially determinant method of focusing, attempting to focus |
|
* left to right, top to bottom in a window, taking groups of |
|
* controls into account. AdvanceKeyboardFocus does not respect the |
|
* full keyboard navigation mode. It will only advance the focus |
|
* between traditionally focusable controls. If you want to advance |
|
* the focus in a way that respects the full keyboard navigation |
|
* mode, use the HIViewAdvanceFocus API. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window to advance the focus in. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
AdvanceKeyboardFocus(WindowRef inWindow) THREEWORDINLINE(0x303C, 0x000F, 0xAA73); |
|
|
|
|
|
/* |
|
* ReverseKeyboardFocus() |
|
* |
|
* Discussion: |
|
* Reverses the focus to the next most appropriate control. Unless |
|
* overriden in some fashion (either by overriding certain carbon |
|
* events or using the HIViewSetNextFocus API), the Toolbox will use |
|
* a spacially determinant method of focusing, attempting to focus |
|
* left to right, top to bottom in a window, taking groups of |
|
* controls into account. ReverseKeyboardFocus does not respect the |
|
* full keyboard navigation mode. It will only reverse the focus |
|
* between traditionally focusable controls. If you want to reverse |
|
* the focus in a way that respects the full keyboard navigation |
|
* mode, use the HIViewAdvanceFocus API. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window to reverse the focus in. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ReverseKeyboardFocus(WindowRef inWindow) THREEWORDINLINE(0x303C, 0x0010, 0xAA73); |
|
|
|
|
|
/* |
|
* ClearKeyboardFocus() |
|
* |
|
* Discussion: |
|
* Clears focus from the currently focused control in a given |
|
* window. The window will be left such that no control is focused |
|
* within it. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window that you want to clear the focus in. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ClearKeyboardFocus(WindowRef inWindow) THREEWORDINLINE(0x303C, 0x0019, 0xAA73); |
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Data (available only with Appearance 1.0 and later) */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
|
|
/* |
|
* GetControlFeatures() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetControlFeatures( |
|
ControlRef inControl, |
|
UInt32 * outFeatures) THREEWORDINLINE(0x303C, 0x0011, 0xAA73); |
|
|
|
|
|
/* |
|
* SetControlData() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetControlData( |
|
ControlRef inControl, |
|
ControlPartCode inPart, |
|
ResType inTagName, |
|
Size inSize, |
|
const void * inData) THREEWORDINLINE(0x303C, 0x0012, 0xAA73); |
|
|
|
|
|
/* |
|
* GetControlData() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetControlData( |
|
ControlRef inControl, |
|
ControlPartCode inPart, |
|
ResType inTagName, |
|
Size inBufferSize, |
|
void * inBuffer, |
|
Size * outActualSize) /* can be NULL */ THREEWORDINLINE(0x303C, 0x0013, 0xAA73); |
|
|
|
|
|
/* |
|
* GetControlDataSize() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in AppearanceLib 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetControlDataSize( |
|
ControlRef inControl, |
|
ControlPartCode inPart, |
|
ResType inTagName, |
|
Size * outMaxSize) THREEWORDINLINE(0x303C, 0x0014, 0xAA73); |
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o Control Drag & Drop */ |
|
/* Carbon only. */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
|
|
/* |
|
* Discussion: |
|
* DragTrackingMessage values for use with HandleControlDragTracking. |
|
*/ |
|
enum { |
|
|
|
/* |
|
* The drag was previously outside the control and it just now |
|
* entered the control. |
|
*/ |
|
kDragTrackingEnterControl = 2, |
|
|
|
/* |
|
* The drag was previously inside the control and it is still inside |
|
* the control. |
|
*/ |
|
kDragTrackingInControl = 3, |
|
|
|
/* |
|
* The drag was previously inside the control and it just now left |
|
* the control. |
|
*/ |
|
kDragTrackingLeaveControl = 4 |
|
}; |
|
|
|
|
|
/* |
|
* HandleControlDragTracking() |
|
* |
|
* Summary: |
|
* Tells a control to respond visually to a drag. |
|
* |
|
* Discussion: |
|
* Call HandleControlDragTracking when a drag is above a control in |
|
* your window and you want to give that control a chance to draw |
|
* appropriately in response to the drag. Note that in order for a |
|
* control to have any chance of responding to this API, you must |
|
* enable the control's drag and drop support with |
|
* SetControlDragTrackingEnabled. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The control the drag is over. Most controls won't track drags |
|
* unless you enable drag tracking on it with |
|
* SetControlDragTrackingEnabled. |
|
* |
|
* inMessage: |
|
* A drag message indicating the state of the drag above the |
|
* control. The meaning of the value you pass in must be relative |
|
* to the control, not the whole window. For when the drag first |
|
* enters the control, you should pass kDragTrackingEnterControl. |
|
* While the drag stays within the control, pass |
|
* kDragTrackingInControl. When the drag leaves the control, pass |
|
* kDragTrackingLeaveControl. |
|
* |
|
* inDrag: |
|
* The drag reference that is over the control. |
|
* |
|
* outLikesDrag: |
|
* On output, this will be a boolean indicating whether the |
|
* control "likes" the drag. A control "likes" the drag if the |
|
* data in the drag ref can be accepted by the control. If the |
|
* control does not like the drag, don't bother calling |
|
* HandleControlDragReceive if the user drops the dragged object |
|
* onto the control. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
HandleControlDragTracking( |
|
ControlRef inControl, |
|
DragTrackingMessage inMessage, |
|
DragReference inDrag, |
|
Boolean * outLikesDrag); |
|
|
|
|
|
|
|
/* |
|
* HandleControlDragReceive() |
|
* |
|
* Summary: |
|
* Tells a control to accept the data in drag reference. |
|
* |
|
* Discussion: |
|
* Call HandleControlDragReceive when the user dropped a drag on a |
|
* control in your window. This gives the control the opportunity to |
|
* pull any interesting data out of the drag and insert the data |
|
* into itself. Note that in order for a control to have any chance |
|
* of responding to this API, you must enable the control's drag and |
|
* drop support with SetControlDragTrackingEnabled. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The control who should accept the data. Most controls won't |
|
* accept drags unless you enable drag tracking on it with |
|
* SetControlDragTrackingEnabled. |
|
* |
|
* inDrag: |
|
* The drag reference that was dropped on the control. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
HandleControlDragReceive( |
|
ControlRef inControl, |
|
DragReference inDrag); |
|
|
|
|
|
|
|
/* |
|
* SetControlDragTrackingEnabled() |
|
* |
|
* Summary: |
|
* Tells a control that it should track and receive drags. |
|
* |
|
* Discussion: |
|
* Call SetControlDragTrackingEnabled to turn enable a control's |
|
* support for drag and drop. Controls won't track drags unless you |
|
* first turn on drag and drop support with this API. Some controls |
|
* don't support drag and drop at all; these controls won't track or |
|
* receive drags even if you call this API with true. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The control whose drag tracking enabled state you'd like to set. |
|
* |
|
* inTracks: |
|
* A Boolean indicating whether you want this control to track and |
|
* receive drags. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
SetControlDragTrackingEnabled( |
|
ControlRef inControl, |
|
Boolean inTracks); |
|
|
|
|
|
|
|
/* |
|
* IsControlDragTrackingEnabled() |
|
* |
|
* Summary: |
|
* Tells you whether a control's drag track and receive support is |
|
* enabled. |
|
* |
|
* Discussion: |
|
* Call IsControlDragTrackingEnabled to query a whether a control's |
|
* drag and drop support is enabled. Some controls don't support |
|
* drag and drop at all; these controls won't track or receive drags |
|
* even if you call this API and see a true output value. |
|
* |
|
* Parameters: |
|
* |
|
* inControl: |
|
* The control whose drag tracking enabled state you'd like to |
|
* query. |
|
* |
|
* outTracks: |
|
* On output, this will contain a Boolean value whether the |
|
* control's drag and drop support is enabled. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
IsControlDragTrackingEnabled( |
|
ControlRef inControl, |
|
Boolean * outTracks); |
|
|
|
|
|
|
|
/* |
|
* SetAutomaticControlDragTrackingEnabledForWindow() |
|
* |
|
* Summary: |
|
* Enables or disables the Control Manager's automatic drag tracking |
|
* for a given window. |
|
* |
|
* Discussion: |
|
* Call SetAutomaticControlDragTrackingEnabledForWindow to turn on |
|
* or off the Control Manager's automatic drag tracking support for |
|
* a given window. By default, your application code is responsible |
|
* for installing drag tracking and receive handlers on a given |
|
* window. The Control Manager, however, has support for |
|
* automatically tracking and receiving drags over controls. The |
|
* Control Manager will detect the control the drag is over and call |
|
* HandleControlDragTracking and HandleControlDragReceive |
|
* appropriately. By default, this automatic support is turned off. |
|
* You can turn on this support by calling |
|
* SetAutomaticControlDragTrackingEnabledForWindow with true. Note |
|
* that earlier versions of system software incorrectly enable this |
|
* support by default; do not rely on this buggy behavior. As of Mac |
|
* OS 10.1.3, Mac OS 9.2, and CarbonLib 1.4, the buggy behavior is |
|
* fixed, and you must call this routine with true to enable |
|
* automatic drag tracking. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window for which you'd like to enable or disable the |
|
* Control Manager's automatic drag tracking support. |
|
* |
|
* inTracks: |
|
* A Boolean value indicating whether you want to enable the |
|
* Control Manager's automatic drag tracking support. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
SetAutomaticControlDragTrackingEnabledForWindow( |
|
WindowRef inWindow, |
|
Boolean inTracks); |
|
|
|
|
|
|
|
/* |
|
* IsAutomaticControlDragTrackingEnabledForWindow() |
|
* |
|
* Summary: |
|
* Tells you whether the Control Manager's automatic drag tracking |
|
* is enabled for a given window. |
|
* |
|
* Discussion: |
|
* Call IsAutomaticControlDragTrackingEnabledForWindow to query the |
|
* enabled state of the Control Manager's automatic drag tracking |
|
* support for a given window. See the information on |
|
* SetAutomaticControlDragTrackingEnabledForWindow for more details. |
|
* |
|
* Parameters: |
|
* |
|
* inWindow: |
|
* The window whose Control Manager automatic drag tracking enable |
|
* state you'd like to query. |
|
* |
|
* outTracks: |
|
* On output, this will contain a Boolean value whether the |
|
* Control Manager's automatic drag tracking is enabled. |
|
* |
|
* Result: |
|
* A result code indicating success or failure. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in ControlsLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSStatus ) |
|
IsAutomaticControlDragTrackingEnabledForWindow( |
|
WindowRef inWindow, |
|
Boolean * outTracks); |
|
|
|
|
|
|
|
|
|
#if !TARGET_OS_MAC |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o QuickTime 3.0 Win32/unix notification mechanism */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* Proc used to notify window that something happened to the control*/ |
|
typedef CALLBACK_API_C( void , ControlNotificationProcPtr )(WindowRef theWindow, ControlRef theControl, ControlNotification notification, long param1, long param2); |
|
/* |
|
Proc used to prefilter events before handled by control. A client of a control calls |
|
CTRLSetPreFilterProc() to have the control call this proc before handling the event. |
|
If the proc returns TRUE, the control can go ahead and handle the event. |
|
*/ |
|
typedef CALLBACK_API_C( Boolean , PreFilterEventProc )(ControlRef theControl, EventRecord *theEvent); |
|
#if CALL_NOT_IN_CARBON |
|
/* |
|
* GetControlComponentInstance() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( long ) |
|
GetControlComponentInstance(ControlRef theControl); |
|
|
|
|
|
/* |
|
* GetControlHandleFromCookie() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( ControlRef ) |
|
GetControlHandleFromCookie(long cookie); |
|
|
|
|
|
#define GetControlRefFromCookie GetControlHandleFromCookie |
|
/* |
|
* SetControlDefProc() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( void ) |
|
SetControlDefProc( |
|
short resID, |
|
ControlDefProcPtr proc); |
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
|
|
typedef ControlNotificationProcPtr ControlNotificationUPP; |
|
#endif /* !TARGET_OS_MAC */ |
|
|
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o C Glue */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
#if CALL_NOT_IN_CARBON |
|
#if CALL_NOT_IN_CARBON |
|
/* |
|
* dragcontrol() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( void ) |
|
dragcontrol( |
|
ControlRef theControl, |
|
Point * startPt, |
|
const Rect * limitRect, |
|
const Rect * slopRect, |
|
short axis); |
|
|
|
|
|
/* |
|
* newcontrol() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( ControlRef ) |
|
newcontrol( |
|
WindowRef theWindow, |
|
const Rect * boundsRect, |
|
const char * title, |
|
Boolean visible, |
|
short value, |
|
short min, |
|
short max, |
|
short procID, |
|
long refCon); |
|
|
|
|
|
/* |
|
* findcontrol() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( short ) |
|
findcontrol( |
|
Point * thePoint, |
|
WindowRef theWindow, |
|
ControlRef * theControl); |
|
|
|
|
|
/* |
|
* getcontroltitle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( void ) |
|
getcontroltitle( |
|
ControlRef theControl, |
|
char * title); |
|
|
|
|
|
/* |
|
* setcontroltitle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( void ) |
|
setcontroltitle( |
|
ControlRef theControl, |
|
const char * title); |
|
|
|
|
|
/* |
|
* trackcontrol() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( short ) |
|
trackcontrol( |
|
ControlRef theControl, |
|
Point * thePoint, |
|
ControlActionUPP actionProc); |
|
|
|
|
|
/* |
|
* testcontrol() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( short ) |
|
testcontrol( |
|
ControlRef theControl, |
|
Point * thePt); |
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
#if OLDROUTINENAMES |
|
/*--------------------------------------------------------------------------------------*/ |
|
/* o OLDROUTINENAMES */ |
|
/*--------------------------------------------------------------------------------------*/ |
|
enum { |
|
useWFont = kControlUsesOwningWindowsFontVariant |
|
}; |
|
|
|
enum { |
|
inThumb = kControlIndicatorPart, |
|
kNoHiliteControlPart = kControlNoPart, |
|
kInIndicatorControlPart = kControlIndicatorPart, |
|
kReservedControlPart = kControlDisabledPart, |
|
kControlInactiveControlPart = kControlInactivePart |
|
}; |
|
|
|
|
|
#define SetCTitle(theControl, title) SetControlTitle(theControl, title) |
|
#define GetCTitle(theControl, title) GetControlTitle(theControl, title) |
|
#define UpdtControl(theWindow, updateRgn) UpdateControls(theWindow, updateRgn) |
|
#define SetCtlValue(theControl, theValue) SetControlValue(theControl, theValue) |
|
#define GetCtlValue(theControl) GetControlValue(theControl) |
|
#define SetCtlMin(theControl, minValue) SetControlMinimum(theControl, minValue) |
|
#define GetCtlMin(theControl) GetControlMinimum(theControl) |
|
#define SetCtlMax(theControl, maxValue) SetControlMaximum(theControl, maxValue) |
|
#define GetCtlMax(theControl) GetControlMaximum(theControl) |
|
#define GetAuxCtl(theControl, acHndl) GetAuxiliaryControlRecord(theControl, acHndl) |
|
#define SetCRefCon(theControl, data) SetControlReference(theControl, data) |
|
#define GetCRefCon(theControl) GetControlReference(theControl) |
|
#define SetCtlAction(theControl, actionProc) SetControlAction(theControl, actionProc) |
|
#define GetCtlAction(theControl) GetControlAction(theControl) |
|
#define SetCtlColor(theControl, newColorTable) SetControlColor(theControl, newColorTable) |
|
#define GetCVariant(theControl) GetControlVariant(theControl) |
|
#define getctitle(theControl, title) getcontroltitle(theControl, title) |
|
#define setctitle(theControl, title) setcontroltitle(theControl, title) |
|
#endif /* OLDROUTINENAMES */ |
|
|
|
#if ACCESSOR_CALLS_ARE_FUNCTIONS |
|
/* Getters */ |
|
/* |
|
* GetControlBounds() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Rect * ) |
|
GetControlBounds( |
|
ControlRef control, |
|
Rect * bounds); |
|
|
|
|
|
/* |
|
* IsControlHilited() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Boolean ) |
|
IsControlHilited(ControlRef control); |
|
|
|
|
|
/* |
|
* GetControlHilite() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( UInt16 ) |
|
GetControlHilite(ControlRef control); |
|
|
|
|
|
/* |
|
* GetControlOwner() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( WindowRef ) |
|
GetControlOwner(ControlRef control); |
|
|
|
|
|
/* |
|
* GetControlDataHandle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Handle ) |
|
GetControlDataHandle(ControlRef control); |
|
|
|
|
|
/* |
|
* GetControlPopupMenuHandle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( MenuRef ) |
|
GetControlPopupMenuHandle(ControlRef control); |
|
|
|
|
|
#define GetControlPopupMenuRef GetControlPopupMenuHandle |
|
/* |
|
* GetControlPopupMenuID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( short ) |
|
GetControlPopupMenuID(ControlRef control); |
|
|
|
|
|
/* Setters */ |
|
/* |
|
* SetControlDataHandle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlDataHandle( |
|
ControlRef control, |
|
Handle dataHandle); |
|
|
|
|
|
/* |
|
* SetControlBounds() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlBounds( |
|
ControlRef control, |
|
const Rect * bounds); |
|
|
|
|
|
/* |
|
* SetControlPopupMenuHandle() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlPopupMenuHandle( |
|
ControlRef control, |
|
MenuRef popupMenu); |
|
|
|
|
|
#define SetControlPopupMenuRef SetControlPopupMenuHandle |
|
/* |
|
* SetControlPopupMenuID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in CarbonAccessors.o 1.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( void ) |
|
SetControlPopupMenuID( |
|
ControlRef control, |
|
short menuID); |
|
|
|
|
|
#endif /* ACCESSOR_CALLS_ARE_FUNCTIONS */ |
|
|
|
#if !OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS |
|
#define GetControlListFromWindow(theWindow) ( *(ControlRef *) (((UInt8 *) theWindow) + sizeof(GrafPort) + 0x20)) |
|
#define GetControlOwningWindowControlList(theWindow) ( *(ControlRef *) (((UInt8 *) theWindow) + sizeof(GrafPort) + 0x20)) |
|
#endif /* !OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS */ |
|
|
|
|
|
|
|
#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 /* __CONTROLS__ */ |
|
|
|
|