Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
main.c
//-------------------------------------------------------------------------- |
// |
// PACKman |
// by Scott ÒZzÓ Zimmerman & Nick Thompson |
// |
// Description: This snippet shows how to implement a simple |
// Chooser Package, updated from Scott ÒZzÓ Zimmerman's |
// PACKman pascal sample |
// |
// Version: 1.0 Completed 10/19/94 |
// |
// |
// Modification History: |
// |
// 10/18/94 nick converted from Pascal |
// 10/19/94 nick updated to reflect info in IM: Devices (pages 1-42 ff) |
// this sample is think C specific |
// |
// To do: |
// implement for metrowerks and MPW C |
// |
// Copyright: © 1989-94 by Apple Computer, Inc., all rights reserved. |
//-------------------------------------------------------------------------- |
#define VERSION 10 // Version (1.0) |
#define DEVICEID 128 // Device ID |
extern pascal OSErr MyPackage( short message, short caller, StringPtr objName, StringPtr objectName, long p1, long p2) ; |
// Device package flags |
// |
// we work out the flags by seeting the appropriate bit in the longword. |
// for our extension we want to set the following flags: |
// |
// usesAppleTalk, |
// noPAP, |
// noPostScript, |
// noMultiples, |
// noLeftButton, |
// noRightButton, |
// usesSavedZoneName, |
// noActualZoneNames, |
// acceptsInit, |
// acceptsNewSel, |
// acceptsFillList, |
// acceptsGetSel, |
// acceptsSelect, |
// acceptsDeselect, |
// ignoresTerminate, |
// |
// This equates to the following: |
// |
// 1098 7654 3210 9876 5432 1098 7654 3210 - bit position |
// 1000 0010 0000 0001 1111 0000 0000 0000 - value (see Device package flags, below) |
// 8 2 0 1 F 0 0 0 - this is 0x8201F800 |
// |
// the meaning of the flags is as follows: |
// |
// Bit Meaning |
// |
// 31 Set if an AppleTalk device |
// 30Ð29 Reserved (clear to 0) |
// 28 Set if the device package can have multiple instances selected at once |
// 27 Set if the device package uses the Left button |
// 26 Set if the device package uses the Right button |
// 25 Set if no zone name has been saved |
// 24 Set if the device package uses actual zone names |
// 23Ð21 Reserved (clear to 0) |
// 20 Set if the device uses the On and Off radio buttons and radio button label |
// 19Ð17 Reserved (clear to 0) |
// 17 Set if the device package accepts the chooserInitMsg message |
// 16 Set if the device package accepts the newSelMsg message |
// 15 Set if the device package accepts the fillListMsg message |
// 14 Set if the device package accepts the getSelMsg message |
// 13 Set if the device package accepts the selectMsg message |
// 12 Set if the device package accepts the deselectMsg message |
// 11 Set if the device package accepts the terminateMsg message |
// 10Ð0 Reserved (clear to 0) |
main() |
{ |
// set up the header for the PACK resource |
asm { |
bra.s @start // branch to label start |
dc.w DEVICEID // declare word const as the pack device ID |
dc.l 'PACK' // the resource type |
dc.w 0xF000 // this is -4096, for the chooser |
dc.l VERSION // the version number of our package |
dc.l 0x8201F800 // Device package flags (see long comment above) |
start: |
jmp MyPackage |
} |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14