Finder.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:18k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       Finder.h
  3.  
  4.      Contains:   Finder flags and container types.
  5.  
  6.      Version:    Technology: Mac OS 8.5
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1990-2001 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __FINDER__
  18. #define __FINDER__
  19. #ifndef __MACTYPES__
  20. #include "MacTypes.h"
  21. #endif
  22. #if PRAGMA_ONCE
  23. #pragma once
  24. #endif
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. #if PRAGMA_IMPORT
  29. #pragma import on
  30. #endif
  31. #if PRAGMA_STRUCT_ALIGN
  32.     #pragma options align=mac68k
  33. #elif PRAGMA_STRUCT_PACKPUSH
  34.     #pragma pack(push, 2)
  35. #elif PRAGMA_STRUCT_PACK
  36.     #pragma pack(2)
  37. #endif
  38. /* Creator and type of clipping files */
  39. enum {
  40.     kClippingCreator            = FOUR_CHAR_CODE('drag'),
  41.     kClippingPictureType        = FOUR_CHAR_CODE('clpp'),
  42.     kClippingTextType           = FOUR_CHAR_CODE('clpt'),
  43.     kClippingSoundType          = FOUR_CHAR_CODE('clps'),
  44.     kClippingUnknownType        = FOUR_CHAR_CODE('clpu')
  45. };
  46. /* Creator and type of Internet Location files */
  47. enum {
  48.     kInternetLocationCreator    = FOUR_CHAR_CODE('drag'),
  49.     kInternetLocationHTTP       = FOUR_CHAR_CODE('ilht'),
  50.     kInternetLocationFTP        = FOUR_CHAR_CODE('ilft'),
  51.     kInternetLocationFile       = FOUR_CHAR_CODE('ilfi'),
  52.     kInternetLocationMail       = FOUR_CHAR_CODE('ilma'),
  53.     kInternetLocationNNTP       = FOUR_CHAR_CODE('ilnw'),
  54.     kInternetLocationAFP        = FOUR_CHAR_CODE('ilaf'),
  55.     kInternetLocationAppleTalk  = FOUR_CHAR_CODE('ilat'),
  56.     kInternetLocationNSL        = FOUR_CHAR_CODE('ilns'),
  57.     kInternetLocationGeneric    = FOUR_CHAR_CODE('ilge')
  58. };
  59. enum {
  60.     kCustomIconResource         = -16455                        /* Custom icon family resource ID */
  61. };
  62. /* In order to specify any of the information described in the */
  63. /* CustomBadgeResource data structure you must clear the kExtendedFlagsAreInvalid */
  64. /* and set kExtendedFlagHasCustomBadge of the FXInfo.fdXFlags or DXInfo.frXFlags field, */
  65. /* and add a resource of type kCustomBadgeResourceType and ID kCustomBadgeResourceID to */
  66. /* the file or to the "Icon/n" file for a folder */
  67. enum {
  68.     kCustomBadgeResourceType    = FOUR_CHAR_CODE('badg'),
  69.     kCustomBadgeResourceID      = kCustomIconResource,
  70.     kCustomBadgeResourceVersion = 0
  71. };
  72. struct CustomBadgeResource {
  73.     SInt16                          version;                    /* This is version kCustomBadgeResourceVersion*/
  74.     SInt16                          customBadgeResourceID;      /* If not 0, the ID of a resource to use on top*/
  75.                                                                 /* of the icon for this file or folder*/
  76.     OSType                          customBadgeType;            /* If not 0, the type and creator of an icon*/
  77.     OSType                          customBadgeCreator;         /* to use on top of the icon*/
  78.     OSType                          windowBadgeType;            /* If not 0, the type and creator of an icon*/
  79.     OSType                          windowBadgeCreator;         /* to display in the header of the window for this */
  80.                                                                 /* file or folder*/
  81.     OSType                          overrideType;               /* If not 0, the type and creator of an icon to*/
  82.     OSType                          overrideCreator;            /* use INSTEAD of the icon for this file or folder*/
  83. };
  84. typedef struct CustomBadgeResource      CustomBadgeResource;
  85. typedef CustomBadgeResource *           CustomBadgeResourcePtr;
  86. typedef CustomBadgeResourcePtr *        CustomBadgeResourceHandle;
  87. /* You can specify routing information for a file by including a 'rout' 0 
  88.     resource in it and setting the kExtendedFlagHasRoutingInfo bit in the extended 
  89.     Finder flags. 
  90.     The 'rout' resource is an array of RoutingResourceEntry. Each entry is considered
  91.     in turn. The first matching entry is used.
  92.     If the creator and fileType match the file being dropped and targetFolder match
  93.     the folder ID of the folder being dropped onto, then the file is rerouted 
  94.     into the specified destination folder.
  95.     The only target folder currently supported is the system folder, 
  96.     kSystemFolderType = 'macs'.
  97. */
  98. enum {
  99.     kRoutingResourceType        = FOUR_CHAR_CODE('rout'),
  100.     kRoutingResourceID          = 0
  101. };
  102. struct RoutingResourceEntry {
  103.     OSType                          creator;                    /* Use '****' or 0 to match any creator */
  104.     OSType                          fileType;                   /* Use '****' or 0 to match any file type */
  105.     OSType                          targetFolder;               /* Folder ID of the folder this file was dropped onto */
  106.     OSType                          destinationFolder;          /* Folder that the source will be routed to */
  107.     OSType                          reservedField;              /* Set to 0 */
  108. };
  109. typedef struct RoutingResourceEntry     RoutingResourceEntry;
  110. typedef RoutingResourceEntry *          RoutingResourcePtr;
  111. typedef RoutingResourcePtr *            RoutingResourceHandle;
  112. /* Types for special container aliases */
  113. enum {
  114.     kContainerFolderAliasType   = FOUR_CHAR_CODE('fdrp'),       /* type for folder aliases */
  115.     kContainerTrashAliasType    = FOUR_CHAR_CODE('trsh'),       /* type for trash folder aliases */
  116.     kContainerHardDiskAliasType = FOUR_CHAR_CODE('hdsk'),       /* type for hard disk aliases */
  117.     kContainerFloppyAliasType   = FOUR_CHAR_CODE('flpy'),       /* type for floppy aliases */
  118.     kContainerServerAliasType   = FOUR_CHAR_CODE('srvr'),       /* type for server aliases */
  119.     kApplicationAliasType       = FOUR_CHAR_CODE('adrp'),       /* type for application aliases */
  120.     kContainerAliasType         = FOUR_CHAR_CODE('drop'),       /* type for all other containers */
  121.     kDesktopPrinterAliasType    = FOUR_CHAR_CODE('dtpa'),       /* type for Desktop Printer alias */
  122.     kContainerCDROMAliasType    = FOUR_CHAR_CODE('cddr'),       /* type for CD-ROM alias */
  123.     kApplicationCPAliasType     = FOUR_CHAR_CODE('acdp'),       /* type for application control panel alias */
  124.     kApplicationDAAliasType     = FOUR_CHAR_CODE('addp'),       /* type for application DA alias */
  125.     kPackageAliasType           = FOUR_CHAR_CODE('fpka'),       /* type for plain package alias */
  126.     kAppPackageAliasType        = FOUR_CHAR_CODE('fapa')        /* type for application package alias */
  127. };
  128. /* Types for Special folder aliases */
  129. enum {
  130.     kSystemFolderAliasType      = FOUR_CHAR_CODE('fasy'),
  131.     kAppleMenuFolderAliasType   = FOUR_CHAR_CODE('faam'),
  132.     kStartupFolderAliasType     = FOUR_CHAR_CODE('fast'),
  133.     kPrintMonitorDocsFolderAliasType = FOUR_CHAR_CODE('fapn'),
  134.     kPreferencesFolderAliasType = FOUR_CHAR_CODE('fapf'),
  135.     kControlPanelFolderAliasType = FOUR_CHAR_CODE('fact'),
  136.     kExtensionFolderAliasType   = FOUR_CHAR_CODE('faex')
  137. };
  138. /* Types for AppleShare folder aliases */
  139. enum {
  140.     kExportedFolderAliasType    = FOUR_CHAR_CODE('faet'),
  141.     kDropFolderAliasType        = FOUR_CHAR_CODE('fadr'),
  142.     kSharedFolderAliasType      = FOUR_CHAR_CODE('fash'),
  143.     kMountedFolderAliasType     = FOUR_CHAR_CODE('famn')
  144. };
  145. /* Finder flags (finderFlags, fdFlags and frFlags) */
  146. /* Any flag reserved or not specified should be set to 0. */
  147. /* If a flag applies to a file, but not to a folder, make sure to check */
  148. /* that the item is not a folder by checking ((ParamBlockRec.ioFlAttrib & ioDirMask) == 0) */
  149. enum {
  150.     kIsOnDesk                   = 0x0001,                       /* Files and folders (System 6) */
  151.     kColor                      = 0x000E,                       /* Files and folders */
  152.                                                                 /* bit 0x0020 was kRequireSwitchLaunch, but is now reserved for future use*/
  153.     kIsShared                   = 0x0040,                       /* Files only (Applications only) */
  154.                                                                 /* If clear, the application needs to write to */
  155.                                                                 /* its resource fork, and therefore cannot be */
  156.                                                                 /* shared on a server */
  157.     kHasNoINITs                 = 0x0080,                       /* Files only (Extensions/Control Panels only) */
  158.                                                                 /* This file contains no INIT resource */
  159.     kHasBeenInited              = 0x0100,                       /* Files only */
  160.                                                                 /* Clear if the file contains desktop database */
  161.                                                                 /* resources ('BNDL', 'FREF', 'open', 'kind'...) */
  162.                                                                 /* that have not been added yet. Set only by the Finder */
  163.                                                                 /* Reserved for folders - make sure this bit is cleared for folders */
  164.                                                                 /* bit 0x0200 was the letter bit for AOCE, but is now reserved for future use */
  165.     kHasCustomIcon              = 0x0400,                       /* Files and folders */
  166.     kIsStationery               = 0x0800,                       /* Files only */
  167.     kNameLocked                 = 0x1000,                       /* Files and folders */
  168.     kHasBundle                  = 0x2000,                       /* Files only */
  169.     kIsInvisible                = 0x4000,                       /* Files and folders */
  170.     kIsAlias                    = 0x8000                        /* Files only */
  171. };
  172. /* Obsolete. Use names defined above. */
  173. enum {
  174.     fOnDesk                     = kIsOnDesk,
  175.     fHasBundle                  = kHasBundle,
  176.     fInvisible                  = kIsInvisible
  177. };
  178. /* Obsolete */
  179. enum {
  180.     fTrash                      = -3,
  181.     fDesktop                    = -2,
  182.     fDisk                       = 0
  183. };
  184. #if OLDROUTINENAMES
  185. enum {
  186.     kIsStationary               = kIsStationery
  187. };
  188. #endif  /* OLDROUTINENAMES */
  189. /* Extended flags (extendedFinderFlags, fdXFlags and frXFlags) */
  190. /* Any flag not specified should be set to 0. */
  191. enum {
  192.     kExtendedFlagsAreInvalid    = 0x8000,                       /* If set the other extended flags are ignored */
  193.     kExtendedFlagHasCustomBadge = 0x0100,                       /* Set if the file or folder has a badge resource */
  194.     kExtendedFlagHasRoutingInfo = 0x0004                        /* Set if the file contains routing info resource */
  195. };
  196. /* Use a filetype in this range to indicate that a file is temporarily busy */
  197. /* (while it is being downloaded or installed, for example).  This prevents */
  198. /* Finder 8.5 and later from trying to change the item's attributes before it */
  199. /* is fully created. -- If you provide a series of 'BNDL' icons for your creator */
  200. /* and some of these filetypes, you can achieve limited icon animation while */
  201. /* the file creation progresses. */
  202. enum {
  203.     kFirstMagicBusyFiletype     = FOUR_CHAR_CODE('bzy '),
  204.     kLastMagicBusyFiletype      = FOUR_CHAR_CODE('bzy?')
  205. };
  206. /* Use this date as a file's or folder's creation date to indicate that it is */
  207. /* temporarily busy (while it is being downloaded or installed, for example). */
  208. /* This prevents Finder from trying to change the item's attributes before it */
  209. /* is fully created (Finder 8.5 and 8.6 check file creation dates; later Finders */
  210. /* may check folder creation dates as well). */
  211. enum {
  212.     kMagicBusyCreationDate      = 0x4F3AFDB0
  213. };
  214. /*------------------------------------------------------------------------*/
  215. /*
  216.    The following data structures are binary compatible with FInfo, DInfo,
  217.    FXInfo and DXInfo but represent the Mac OS 8 semantic of the fields.
  218.    Use these data structures preferably to FInfo, etc...
  219. */
  220. /*------------------------------------------------------------------------*/
  221. struct FileInfo {
  222.     OSType                          fileType;                   /* The type of the file */
  223.     OSType                          fileCreator;                /* The file's creator */
  224.     UInt16                          finderFlags;                /* ex: kHasBundle, kIsInvisible... */
  225.     Point                           location;                   /* File's location in the folder */
  226.                                                                 /* If set to {0, 0}, the Finder will place the item automatically */
  227.     UInt16                          reservedField;              /* (set to 0) */
  228. };
  229. typedef struct FileInfo                 FileInfo;
  230. struct FolderInfo {
  231.     Rect                            windowBounds;               /* The position and dimension of the folder's window */
  232.     UInt16                          finderFlags;                /* ex. kIsInvisible, kNameLocked, etc.*/
  233.     Point                           location;                   /* Folder's location in the parent folder */
  234.                                                                 /* If set to {0, 0}, the Finder will place the item automatically */
  235.     UInt16                          reservedField;              /* (set to 0) */
  236. };
  237. typedef struct FolderInfo               FolderInfo;
  238. struct ExtendedFileInfo {
  239.     SInt16                          reserved1[4];               /* Reserved (set to 0) */
  240.     UInt16                          extendedFinderFlags;        /* Extended flags (custom badge, routing info...) */
  241.     SInt16                          reserved2;                  /* Reserved (set to 0). Comment ID if high-bit is clear */
  242.     SInt32                          putAwayFolderID;            /* Put away folder ID */
  243. };
  244. typedef struct ExtendedFileInfo         ExtendedFileInfo;
  245. struct ExtendedFolderInfo {
  246.     Point                           scrollPosition;             /* Scroll position (for icon views) */
  247.     SInt32                          reserved1;                  /* Reserved (set to 0) */
  248.     UInt16                          extendedFinderFlags;        /* Extended flags (custom badge, routing info...) */
  249.     SInt16                          reserved2;                  /* Reserved (set to 0). Comment ID if high-bit is clear */
  250.     SInt32                          putAwayFolderID;            /* Put away folder ID */
  251. };
  252. typedef struct ExtendedFolderInfo       ExtendedFolderInfo;
  253. /*------------------------------------------------------------------------*/
  254. /*
  255.    The following data structures are here for compatibility.
  256.    Use the new data structures replacing them if possible (i.e. FileInfo 
  257.    instead of FInfo, etc...)
  258. */
  259. /*------------------------------------------------------------------------*/
  260. /* File info */
  261. /*
  262.      IMPORTANT:
  263.      In MacOS 8, the fdFldr field has become reserved for the Finder.
  264. */
  265. struct FInfo {
  266.     OSType                          fdType;                     /* The type of the file */
  267.     OSType                          fdCreator;                  /* The file's creator */
  268.     UInt16                          fdFlags;                    /* Flags ex. kHasBundle, kIsInvisible, etc. */
  269.     Point                           fdLocation;                 /* File's location in folder. */
  270.                                                                 /* If set to {0, 0}, the Finder will place the item automatically */
  271.     SInt16                          fdFldr;                     /* Reserved (set to 0) */
  272. };
  273. typedef struct FInfo                    FInfo;
  274. /* Extended file info */
  275. /*
  276.      IMPORTANT:
  277.      In MacOS 8, the fdIconID and fdComment fields were changed
  278.      to become reserved fields for the Finder.
  279.      The fdScript has become an extended flag.
  280. */
  281. struct FXInfo {
  282.     SInt16                          fdIconID;                   /* Reserved (set to 0) */
  283.     SInt16                          fdReserved[3];              /* Reserved (set to 0) */
  284.     SInt8                           fdScript;                   /* Extended flags. Script code if high-bit is set */
  285.     SInt8                           fdXFlags;                   /* Extended flags */
  286.     SInt16                          fdComment;                  /* Reserved (set to 0). Comment ID if high-bit is clear */
  287.     SInt32                          fdPutAway;                  /* Put away folder ID */
  288. };
  289. typedef struct FXInfo                   FXInfo;
  290. /* Folder info */
  291. /*
  292.      IMPORTANT:
  293.      In MacOS 8, the frView field was changed to become reserved 
  294.      field for the Finder.
  295. */
  296. struct DInfo {
  297.     Rect                            frRect;                     /* Folder's window bounds */
  298.     UInt16                          frFlags;                    /* Flags ex. kIsInvisible, kNameLocked, etc.*/
  299.     Point                           frLocation;                 /* Folder's location in parent folder */
  300.                                                                 /* If set to {0, 0}, the Finder will place the item automatically */
  301.     SInt16                          frView;                     /* Reserved (set to 0) */
  302. };
  303. typedef struct DInfo                    DInfo;
  304. /* Extended folder info */
  305. /*
  306.      IMPORTANT:
  307.      In MacOS 8, the frOpenChain and frComment fields were changed
  308.      to become reserved fields for the Finder.
  309.      The frScript has become an extended flag.
  310. */
  311. struct DXInfo {
  312.     Point                           frScroll;                   /* Scroll position */
  313.     SInt32                          frOpenChain;                /* Reserved (set to 0) */
  314.     SInt8                           frScript;                   /* Extended flags. Script code if high-bit is set */
  315.     SInt8                           frXFlags;                   /* Extended flags */
  316.     SInt16                          frComment;                  /* Reserved (set to 0). Comment ID if high-bit is clear */
  317.     SInt32                          frPutAway;                  /* Put away folder ID */
  318. };
  319. typedef struct DXInfo                   DXInfo;
  320. /* ControlPanelDefProcPtr and cdev constants have all been moved to Processes.i*/
  321. #if PRAGMA_STRUCT_ALIGN
  322.     #pragma options align=reset
  323. #elif PRAGMA_STRUCT_PACKPUSH
  324.     #pragma pack(pop)
  325. #elif PRAGMA_STRUCT_PACK
  326.     #pragma pack()
  327. #endif
  328. #ifdef PRAGMA_IMPORT_OFF
  329. #pragma import off
  330. #elif PRAGMA_IMPORT
  331. #pragma import reset
  332. #endif
  333. #ifdef __cplusplus
  334. }
  335. #endif
  336. #endif /* __FINDER__ */