[comp.sys.mac.programmer] Accessing globals w/ Pascal

mlab2@kuhub.cc.ukans.edu (12/31/90)

How do you access 'globals' from Pascal?  Example: Changing the volume of the
Mac.  Example: Setting the height of the menu bar to 0.
I know, don't touch these, but I write games.  Need I say more?  (Bane of the
Human Interface Guidelines :) ).
Has this been beaten like a dog already?

Thanks in advance.  (BTW, still can't respond to mail)

:======:****************************************************************
: ==== :*   john calhoun   **  And watching the stars go on at night, **
:  === :*   Soft Dorothy   **  I'd like to see just one of them die.. **
:.=....:****************************************************************

phils@chaos.cs.brandeis.edu (Phil Shapiro) (01/01/91)

In article <27660.277e4ce1@kuhub.cc.ukans.edu> mlab2@kuhub.cc.ukans.edu writes:
   How do you access 'globals' from Pascal?  Example: Changing the
   volume of the Mac.  Example: Setting the height of the menu bar to 0.

Kind of clumsy compared with C:

program foo;
const
  MBarHeight = $BAA;  { contains integer height of menu bar }
type
  IntPtr = ^Integer;  { need this to coerce our constant into a pointer }
begin
  writeln('The current menu bar height is ',IntPtr(MBarHeight)^);
  IntPtr(MBarHeight)^ := 40;  { change it to 40 pixels }
end.

Note that really removing the menu bar involves changing the GrayRgn.
Check out the UMPG, there's an example in there.

	-phil
--
   Phil Shapiro                           Technical Support Analyst
   Language Products Group                     Symantec Corporation
		Internet: phils@chaos.cs.brandeis.edu
-- 
   Phil Shapiro                           Technical Support Analyst
   Language Products Group                     Symantec Corporation

Chris.Gehlker@p12.f56.n114.z1.fidonet.org (Chris Gehlker) (01/03/91)

M> How do you access 'globals' from Pascal? Example: Changing the 
M> volume of the Mac. Example: Setting the height of the menu bar 
M> to 0. I know, don't touch these, but I write games. Need I say 
M> more? (Bane of the Human Interface Guidelines :) ). Has this 
M> been beaten like a dog already?

You can set the sound volume with SetSoundVol and avoid globals alltoghther.

As for the menu bar height, the following code doesn't work but it does 
illustrate
setting globals:

program MBarHeight;

 uses
  Script;

 type
  WordPtr = ^integer;

 var
  OldHeight: integer;
  theMBarHeight: WordPtr;

begin
 OldHeight := GetMBarHeight;
 theMBarHeight := WordPtr($BAA);
 theMBarHeight^ := 0;
 DrawMenuBar;
 repeat
 until Button;
 theMBarHeight^ := OldHeight;
 DrawMenuBar
end.

Setting the global here doesn't really change the way DrawMenuBar works.
You'll have to convince the Menu Manager that the System Font is zero pixels
high or just draw over the menu bar.
 
 

--  
Uucp: ...{gatech,ames,rutgers}!ncar!asuvax!stjhmc!56.12!Chris.Gehlker
Internet: Chris.Gehlker@p12.f56.n114.z1.fidonet.org