home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / Windows.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  11.9 KB  |  461 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Windows.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Windows;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __WINDOWS__}
  27. {$SETC __WINDOWS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC WindowsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __MEMORY__}
  35. {$I Memory.p}
  36. {$ENDC}
  37. {    Types.p                                                        }
  38. {        ConditionalMacros.p                                        }
  39. {    MixedMode.p                                                    }
  40.  
  41. {$IFC UNDEFINED __QUICKDRAW__}
  42. {$I Quickdraw.p}
  43. {$ENDC}
  44. {    QuickdrawText.p                                                }
  45.  
  46. {$IFC UNDEFINED __EVENTS__}
  47. {$I Events.p}
  48. {$ENDC}
  49. {    OSUtils.p                                                    }
  50.  
  51. {$IFC UNDEFINED __CONTROLS__}
  52. {$I Controls.p}
  53. {$ENDC}
  54. {    Menus.p                                                        }
  55.  
  56. {$PUSH}
  57. {$ALIGN MAC68K}
  58. {$LibExport+}
  59.  
  60. CONST
  61.     documentProc                = 0;
  62.     dBoxProc                    = 1;
  63.     plainDBox                    = 2;
  64.     altDBoxProc                    = 3;
  65.     noGrowDocProc                = 4;
  66.     movableDBoxProc                = 5;
  67.     zoomDocProc                    = 8;
  68.     zoomNoGrow                    = 12;
  69.     rDocProc                    = 16;
  70. { floating window defproc ids }
  71.     floatProc                    = 1985;
  72.     floatGrowProc                = 1987;
  73.     floatZoomProc                = 1989;
  74.     floatZoomGrowProc            = 1991;
  75.     floatSideProc                = 1993;
  76.     floatSideGrowProc            = 1995;
  77.     floatSideZoomProc            = 1997;
  78.     floatSideZoomGrowProc        = 1999;
  79. { window kinds }
  80.     dialogKind                    = 2;
  81.     userKind                    = 8;
  82. {FindWindow Result Codes}
  83.     inDesk                        = 0;
  84.     inMenuBar                    = 1;
  85.     inSysWindow                    = 2;
  86.     inContent                    = 3;
  87.     inDrag                        = 4;
  88.     inGrow                        = 5;
  89.     inGoAway                    = 6;
  90.     inZoomIn                    = 7;
  91.     inZoomOut                    = 8;
  92.  
  93. {window messages}
  94.     wDraw                        = 0;
  95.     wHit                        = 1;
  96.     wCalcRgns                    = 2;
  97.     wNew                        = 3;
  98.     wDispose                    = 4;
  99.     wGrow                        = 5;
  100.     wDrawGIcon                    = 6;
  101.     deskPatID                    = 16;
  102. {Window Part Identifiers which correlate color table entries with window elements}
  103.     wContentColor                = 0;
  104.     wFrameColor                    = 1;
  105.     wTextColor                    = 2;
  106.     wHiliteColor                = 3;
  107.     wTitleBarColor                = 4;
  108.  
  109.     wNoHit                        = 0;
  110.     wInContent                    = 1;
  111.     wInDrag                        = 2;
  112.     wInGrow                        = 3;
  113.     wInGoAway                    = 4;
  114.     wInZoomIn                    = 5;
  115.     wInZoomOut                    = 6;
  116.  
  117. TYPE
  118.     WindowDefProcPtr = ProcPtr;  { FUNCTION WindowDef(varCode: INTEGER; theWindow: WindowRef; message: INTEGER; param: LONGINT): LONGINT; }
  119.     {
  120.         DeskHookProcPtr uses register based parameters on the 68k and cannot
  121.         be written in or called from a high-level language without the help of
  122.         mixed mode or assembly glue.
  123.  
  124.         In:
  125.          => mouseClick      D0.B
  126.          => *theEvent       A0.L
  127.     }
  128.     DeskHookProcPtr = ProcPtr;  { PROCEDURE DeskHook(mouseClick: BOOLEAN; VAR theEvent: EventRecord); }
  129.     WindowDefUPP = UniversalProcPtr;
  130.     DeskHookUPP = UniversalProcPtr;
  131.  
  132. CONST
  133.     uppWindowDefProcInfo = $00003BB0; { FUNCTION (2 byte param, 4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  134.     uppDeskHookProcInfo = $00130802; { Register PROCEDURE (1 byte in D0, 4 bytes in A0); }
  135.  
  136. FUNCTION NewWindowDefProc(userRoutine: WindowDefProcPtr): WindowDefUPP;
  137.     {$IFC NOT GENERATINGCFM }
  138.     INLINE $2E9F;
  139.     {$ENDC}
  140.  
  141. FUNCTION NewDeskHookProc(userRoutine: DeskHookProcPtr): DeskHookUPP;
  142.     {$IFC NOT GENERATINGCFM }
  143.     INLINE $2E9F;
  144.     {$ENDC}
  145.  
  146. FUNCTION CallWindowDefProc(varCode: INTEGER; theWindow: WindowRef; message: INTEGER; param: LONGINT; userRoutine: WindowDefUPP): LONGINT;
  147.     {$IFC NOT GENERATINGCFM}
  148.     INLINE $205F, $4E90;
  149.     {$ENDC}
  150.  
  151. PROCEDURE CallDeskHookProc(mouseClick: BOOLEAN; VAR theEvent: EventRecord; userRoutine: DeskHookUPP);
  152.     {$IFC NOT GENERATINGCFM}
  153.     {To be implemented:  Glue to move parameters into registers.}
  154.     {$ENDC}
  155. FUNCTION GetGrayRgn : RgnHandle;
  156.     {$IFC NOT CFMSYSTEMCALLS}
  157.     INLINE $2EB8, $09EE;            { MOVE.L $09EE,(SP) }
  158.     {$ENDC}
  159.  
  160.  
  161. TYPE
  162.     WinCTab = RECORD
  163.         wCSeed:                    LONGINT;                                {reserved}
  164.         wCReserved:                INTEGER;                                {reserved}
  165.         ctSize:                    INTEGER;                                {usually 4 for windows}
  166.         ctTable:                ARRAY [0..4] OF ColorSpec;
  167.     END;
  168.     WCTabPtr = ^WinCTab;
  169.     WCTabHandle = ^WCTabPtr;
  170.  
  171.  
  172. PROCEDURE InitWindows;
  173.     {$IFC NOT GENERATINGCFM}
  174.     INLINE $A912;
  175.     {$ENDC}
  176. PROCEDURE GetWMgrPort(VAR wPort: GrafPtr);
  177.     {$IFC NOT GENERATINGCFM}
  178.     INLINE $A910;
  179.     {$ENDC}
  180. FUNCTION NewWindow(wStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: ConstStr255Param; visible: BOOLEAN; theProc: INTEGER; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: LONGINT): WindowRef;
  181.     {$IFC NOT GENERATINGCFM}
  182.     INLINE $A913;
  183.     {$ENDC}
  184. FUNCTION GetNewWindow(windowID: INTEGER; wStorage: UNIV Ptr; behind: WindowRef): WindowRef;
  185.     {$IFC NOT GENERATINGCFM}
  186.     INLINE $A9BD;
  187.     {$ENDC}
  188. PROCEDURE CloseWindow(theWindow: WindowRef);
  189.     {$IFC NOT GENERATINGCFM}
  190.     INLINE $A92D;
  191.     {$ENDC}
  192. PROCEDURE DisposeWindow(theWindow: WindowRef);
  193.     {$IFC NOT GENERATINGCFM}
  194.     INLINE $A914;
  195.     {$ENDC}
  196. PROCEDURE GetWTitle(theWindow: WindowRef; VAR title: Str255);
  197.     {$IFC NOT GENERATINGCFM}
  198.     INLINE $A919;
  199.     {$ENDC}
  200. PROCEDURE SelectWindow(theWindow: WindowRef);
  201.     {$IFC NOT GENERATINGCFM}
  202.     INLINE $A91F;
  203.     {$ENDC}
  204. PROCEDURE HideWindow(theWindow: WindowRef);
  205.     {$IFC NOT GENERATINGCFM}
  206.     INLINE $A916;
  207.     {$ENDC}
  208. PROCEDURE ShowWindow(theWindow: WindowRef);
  209.     {$IFC NOT GENERATINGCFM}
  210.     INLINE $A915;
  211.     {$ENDC}
  212. PROCEDURE ShowHide(theWindow: WindowRef; showFlag: BOOLEAN);
  213.     {$IFC NOT GENERATINGCFM}
  214.     INLINE $A908;
  215.     {$ENDC}
  216. PROCEDURE HiliteWindow(theWindow: WindowRef; fHilite: BOOLEAN);
  217.     {$IFC NOT GENERATINGCFM}
  218.     INLINE $A91C;
  219.     {$ENDC}
  220. PROCEDURE BringToFront(theWindow: WindowRef);
  221.     {$IFC NOT GENERATINGCFM}
  222.     INLINE $A920;
  223.     {$ENDC}
  224. PROCEDURE SendBehind(theWindow: WindowRef; behindWindow: WindowRef);
  225.     {$IFC NOT GENERATINGCFM}
  226.     INLINE $A921;
  227.     {$ENDC}
  228. FUNCTION FrontWindow: WindowRef;
  229.     {$IFC NOT GENERATINGCFM}
  230.     INLINE $A924;
  231.     {$ENDC}
  232. PROCEDURE DrawGrowIcon(theWindow: WindowRef);
  233.     {$IFC NOT GENERATINGCFM}
  234.     INLINE $A904;
  235.     {$ENDC}
  236. PROCEDURE MoveWindow(theWindow: WindowRef; hGlobal: INTEGER; vGlobal: INTEGER; front: BOOLEAN);
  237.     {$IFC NOT GENERATINGCFM}
  238.     INLINE $A91B;
  239.     {$ENDC}
  240. PROCEDURE SizeWindow(theWindow: WindowRef; w: INTEGER; h: INTEGER; fUpdate: BOOLEAN);
  241.     {$IFC NOT GENERATINGCFM}
  242.     INLINE $A91D;
  243.     {$ENDC}
  244. PROCEDURE ZoomWindow(theWindow: WindowRef; partCode: INTEGER; front: BOOLEAN);
  245.     {$IFC NOT GENERATINGCFM}
  246.     INLINE $A83A;
  247.     {$ENDC}
  248. PROCEDURE InvalRect({CONST}VAR badRect: Rect);
  249.     {$IFC NOT GENERATINGCFM}
  250.     INLINE $A928;
  251.     {$ENDC}
  252. PROCEDURE InvalRgn(badRgn: RgnHandle);
  253.     {$IFC NOT GENERATINGCFM}
  254.     INLINE $A927;
  255.     {$ENDC}
  256. PROCEDURE ValidRect({CONST}VAR goodRect: Rect);
  257.     {$IFC NOT GENERATINGCFM}
  258.     INLINE $A92A;
  259.     {$ENDC}
  260. PROCEDURE ValidRgn(goodRgn: RgnHandle);
  261.     {$IFC NOT GENERATINGCFM}
  262.     INLINE $A929;
  263.     {$ENDC}
  264. PROCEDURE BeginUpdate(theWindow: WindowRef);
  265.     {$IFC NOT GENERATINGCFM}
  266.     INLINE $A922;
  267.     {$ENDC}
  268. PROCEDURE EndUpdate(theWindow: WindowRef);
  269.     {$IFC NOT GENERATINGCFM}
  270.     INLINE $A923;
  271.     {$ENDC}
  272. PROCEDURE SetWRefCon(theWindow: WindowRef; data: LONGINT);
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $A918;
  275.     {$ENDC}
  276. FUNCTION GetWRefCon(theWindow: WindowRef): LONGINT;
  277.     {$IFC NOT GENERATINGCFM}
  278.     INLINE $A917;
  279.     {$ENDC}
  280. PROCEDURE SetWindowPic(theWindow: WindowRef; pic: PicHandle);
  281.     {$IFC NOT GENERATINGCFM}
  282.     INLINE $A92E;
  283.     {$ENDC}
  284. FUNCTION GetWindowPic(theWindow: WindowRef): PicHandle;
  285.     {$IFC NOT GENERATINGCFM}
  286.     INLINE $A92F;
  287.     {$ENDC}
  288. FUNCTION CheckUpdate(VAR theEvent: EventRecord): BOOLEAN;
  289.     {$IFC NOT GENERATINGCFM}
  290.     INLINE $A911;
  291.     {$ENDC}
  292. PROCEDURE ClipAbove(window: WindowRef);
  293.     {$IFC NOT GENERATINGCFM}
  294.     INLINE $A90B;
  295.     {$ENDC}
  296. PROCEDURE SaveOld(window: WindowRef);
  297.     {$IFC NOT GENERATINGCFM}
  298.     INLINE $A90E;
  299.     {$ENDC}
  300. PROCEDURE DrawNew(window: WindowRef; update: BOOLEAN);
  301.     {$IFC NOT GENERATINGCFM}
  302.     INLINE $A90F;
  303.     {$ENDC}
  304. PROCEDURE PaintOne(window: WindowRef; clobberedRgn: RgnHandle);
  305.     {$IFC NOT GENERATINGCFM}
  306.     INLINE $A90C;
  307.     {$ENDC}
  308. PROCEDURE PaintBehind(startWindow: WindowRef; clobberedRgn: RgnHandle);
  309.     {$IFC NOT GENERATINGCFM}
  310.     INLINE $A90D;
  311.     {$ENDC}
  312. PROCEDURE CalcVis(window: WindowRef);
  313.     {$IFC NOT GENERATINGCFM}
  314.     INLINE $A909;
  315.     {$ENDC}
  316. PROCEDURE CalcVisBehind(startWindow: WindowRef; clobberedRgn: RgnHandle);
  317.     {$IFC NOT GENERATINGCFM}
  318.     INLINE $A90A;
  319.     {$ENDC}
  320. FUNCTION GrowWindow(theWindow: WindowRef; startPt: Point; {CONST}VAR bBox: Rect): LONGINT;
  321.     {$IFC NOT GENERATINGCFM}
  322.     INLINE $A92B;
  323.     {$ENDC}
  324. FUNCTION FindWindow(thePoint: Point; VAR theWindow: WindowRef): INTEGER;
  325.     {$IFC NOT GENERATINGCFM}
  326.     INLINE $A92C;
  327.     {$ENDC}
  328. FUNCTION PinRect({CONST}VAR theRect: Rect; thePt: Point): LONGINT;
  329.     {$IFC NOT GENERATINGCFM}
  330.     INLINE $A94E;
  331.     {$ENDC}
  332. FUNCTION DragGrayRgn(theRgn: RgnHandle; startPt: Point; {CONST}VAR limitRect: Rect; {CONST}VAR slopRect: Rect; axis: INTEGER; actionProc: DragGrayRgnUPP): LONGINT;
  333.     {$IFC NOT GENERATINGCFM}
  334.     INLINE $A905;
  335.     {$ENDC}
  336. FUNCTION DragTheRgn(theRgn: RgnHandle; startPt: Point; {CONST}VAR limitRect: Rect; {CONST}VAR slopRect: Rect; axis: INTEGER; actionProc: DragGrayRgnUPP): LONGINT;
  337.     {$IFC NOT GENERATINGCFM}
  338.     INLINE $A926;
  339.     {$ENDC}
  340. FUNCTION TrackBox(theWindow: WindowRef; thePt: Point; partCode: INTEGER): BOOLEAN;
  341.     {$IFC NOT GENERATINGCFM}
  342.     INLINE $A83B;
  343.     {$ENDC}
  344. PROCEDURE GetCWMgrPort(VAR wMgrCPort: CGrafPtr);
  345.     {$IFC NOT GENERATINGCFM}
  346.     INLINE $AA48;
  347.     {$ENDC}
  348. PROCEDURE SetWinColor(theWindow: WindowRef; newColorTable: WCTabHandle);
  349.     {$IFC NOT GENERATINGCFM}
  350.     INLINE $AA41;
  351.     {$ENDC}
  352. PROCEDURE SetDeskCPat(deskPixPat: PixPatHandle);
  353.     {$IFC NOT GENERATINGCFM}
  354.     INLINE $AA47;
  355.     {$ENDC}
  356. FUNCTION NewCWindow(wStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: ConstStr255Param; visible: BOOLEAN; procID: INTEGER; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: LONGINT): WindowRef;
  357.     {$IFC NOT GENERATINGCFM}
  358.     INLINE $AA45;
  359.     {$ENDC}
  360. FUNCTION GetNewCWindow(windowID: INTEGER; wStorage: UNIV Ptr; behind: WindowRef): WindowRef;
  361.     {$IFC NOT GENERATINGCFM}
  362.     INLINE $AA46;
  363.     {$ENDC}
  364. FUNCTION GetWVariant(theWindow: WindowRef): INTEGER;
  365.     {$IFC NOT GENERATINGCFM}
  366.     INLINE $A80A;
  367.     {$ENDC}
  368. PROCEDURE SetWTitle(theWindow: WindowRef; title: ConstStr255Param);
  369.     {$IFC NOT GENERATINGCFM}
  370.     INLINE $A91A;
  371.     {$ENDC}
  372. FUNCTION TrackGoAway(theWindow: WindowRef; thePt: Point): BOOLEAN;
  373.     {$IFC NOT GENERATINGCFM}
  374.     INLINE $A91E;
  375.     {$ENDC}
  376. PROCEDURE DragWindow(theWindow: WindowRef; startPt: Point; {CONST}VAR boundsRect: Rect);
  377.     {$IFC NOT GENERATINGCFM}
  378.     INLINE $A925;
  379.     {$ENDC}
  380. {$IFC NOT STRICT_WINDOWS }
  381.     
  382. TYPE
  383.     WindowPeek = ^WindowRecord;
  384.  
  385.     WindowRecord = RECORD
  386.         port:                    GrafPort;
  387.         windowKind:                INTEGER;
  388.         visible:                BOOLEAN;
  389.         hilited:                BOOLEAN;
  390.         goAwayFlag:                BOOLEAN;
  391.         spareFlag:                BOOLEAN;
  392.         strucRgn:                RgnHandle;
  393.         contRgn:                RgnHandle;
  394.         updateRgn:                RgnHandle;
  395.         windowDefProc:            Handle;
  396.         dataHandle:                Handle;
  397.         titleHandle:            StringHandle;
  398.         titleWidth:                INTEGER;
  399.         controlList:            ControlRef;
  400.         nextWindow:                WindowPeek;
  401.         windowPic:                PicHandle;
  402.         refCon:                    LONGINT;
  403.     END;
  404.     CWindowPeek = ^CWindowRecord;
  405.  
  406.     CWindowRecord = RECORD
  407.         port:                    CGrafPort;
  408.         windowKind:                INTEGER;
  409.         visible:                BOOLEAN;
  410.         hilited:                BOOLEAN;
  411.         goAwayFlag:                BOOLEAN;
  412.         spareFlag:                BOOLEAN;
  413.         strucRgn:                RgnHandle;
  414.         contRgn:                RgnHandle;
  415.         updateRgn:                RgnHandle;
  416.         windowDefProc:            Handle;
  417.         dataHandle:                Handle;
  418.         titleHandle:            StringHandle;
  419.         titleWidth:                INTEGER;
  420.         controlList:            ControlRef;
  421.         nextWindow:                CWindowPeek;
  422.         windowPic:                PicHandle;
  423.         refCon:                    LONGINT;
  424.     END;
  425.     WStateData = RECORD
  426.         userState:                Rect;                                    {user state}
  427.         stdState:                Rect;                                    {standard state}
  428.     END;
  429.     WStateDataPtr = ^WStateData;
  430.     WStateDataHandle = ^WStateDataPtr;
  431.  
  432.     AuxWinPtr = ^AuxWinRec;
  433.     AuxWinHandle = ^AuxWinPtr;
  434.  
  435.     AuxWinRec = RECORD
  436.         awNext:                    AuxWinHandle;                            {handle to next AuxWinRec}
  437.         awOwner:                WindowRef;                                {ptr to window }
  438.         awCTable:                CTabHandle;                                {color table for this window}
  439.         reserved:                UInt32;                                    {  }
  440.         awFlags:                LONGINT;                                {reserved for expansion}
  441.         awReserved:                CTabHandle;                                {reserved for expansion}
  442.         awRefCon:                LONGINT;                                {user Constant}
  443.     END;
  444.  
  445. FUNCTION GetAuxWin(theWindow: WindowRef; VAR awHndl: AuxWinHandle): BOOLEAN;
  446.     {$IFC NOT GENERATINGCFM}
  447.     INLINE $AA42;
  448.     {$ENDC}
  449. {$ENDC}
  450.  
  451. {$ALIGN RESET}
  452. {$POP}
  453.  
  454. {$SETC UsingIncludes := WindowsIncludes}
  455.  
  456. {$ENDC} {__WINDOWS__}
  457.  
  458. {$IFC NOT UsingIncludes}
  459.  END.
  460. {$ENDC}
  461.