[comp.sys.mac.programmer] GhostWindow Problem Solved

sdh@flash.bellcore.com (Stephen D Hawley) (01/12/90)

With some of the ideas I got in reply to my question, I reattacked the
problem of creating a window that floats on top of all your others.

Below is a small Think C 4.0 demo of my efforts (It should work in 3.0
if you ignore the project and build a new one).

The main problem, it turns out, is to figure out how to drag a window and
leave it behind your ghost window (which DragWindow() won't do).  I ended
up disassembling DragWindow() in MacsBug to figure out how they determine
the size of the window above and to the left of the content region.  The
answer is: it's a kludge.  You have to dig through the portBits of the window
(making sure its not a color port) and fiddle with some internals. 

My code will probably break on future releases of the machine if they change
BOTH the GrafPort and CGrafPort structures, but until then it's pretty safe.

Enjoy.


------->8----cut-here----8<-------------------------------------
(This file must be converted with BinHex 4.0)

:$fGSEh0dGfPZC'ph,R0TG!"6593K8dP8)3#3"#2`!!!"(JGf8dP8)3!(!!!Mm(*
-BA8"!*!)!Ja%FQ&R9fPZC'ph,Q-!N$0849K85d&)6!%!SG*TID(5DTS!N!B(e!#
3"J8G!!$8X!!3!"!!%1LK,e3d!+%#""%jBFjF5H1'c*Xl,XD!D0%#a"3kCHb8!B%
Nc"dfCI+`!$'($"SJCYL%QB2'KCJbE0L-H51R6-3hE8$%H*%$aX##4XV!"''QjNB
kEd$8QE-a6%-30FQNQ80(6KSaG6##S)0QkNLXG%!iG(-LV&5UGH5)fBTQim`fEFU
iS62R*`LRC%#N-3-LcjXk5TRU$F[`,JJiFYkF3GKQC*L`)&H'440')eZhIq9JR*0
RDp)cD5c(Y6XQDKSk,Z`fbA-`iF+'$e'NZ$Z',JJe5b'R@E1aY8+'$Zr)(PN'cjJ
bF!L($81'c"c$4Gr-Y3XR$1-b'19i&PYQ6"Sb'rIfr3[LMY1`A+GZIkRAc@@LLHH
#S!R#c4[82emdD,$Dpq[J+0c"d%K8@8I(9hme0-G)dFf93J2r234&9H8aY%-$8,c
"8&J&DRDK&0f&TB)B#6ThS4"[["'CH`h5FH%H$53Ja4PZG0335&Z9d3BF-lTaB3*
X5(H'@!LG!H)FGE$KBS`JeNC5N!"`r(J%3QC-U0dFPC@4SBFa&THGHe1'8590BE@
4ajBZJK!3#'DLUGGcEJJ&APj)JA!'GZq0`8BDF-$"d*!!H)%`%dh13CA''@L)U&m
#'@jBS4Y-[$('Md+FeN3BF"!NS"Y#02&MM%GJKbB+*Q#T%CSTr$L&U'55fLDCUFB
BijTFE84'N9#9!CTdJP,QaTd,NT68(4Y4CPQGl,Q4aR&h2@AU8@h0adCHdQfN`U)
BlGJM#$f!i%3CGr3Sfip$[!&((Z+LJ%+%Gd!Ke"STE*T##cj3*8FGBr3i8VBmdKK
V!V-@e%BB[%'9BNjQd&IVNqEQkZ5e-Fi"T3XJQ4&@Yb6@S5#p&BG9d3`r5QbZ#dK
PLR'*Fp"EmN3JJ"caa&BKHM%)'@rX3mb*JV"#bb&26#)G519dXXE1dIYcd$Vc,'X
#DpkDd&f*%8h3SNiE@3D55R*V8*&KSNXM#[cU5a)G"L*)G,#P3MQ5IH@kB@mB'ii
%!a1a"Lc@X-9QZCe$KVAaKNBr6"fMH#K8I@55BBA3,3aii!$$iiir2YXHDKDdm-#
J5H4'(@fmT*ekdH@84"-J@+%L#%Q-")F,)-L3!!-0JLH3!-#QR@TY3S!-d3X(QCA
5p@m#K02H",f*h5&%(TZ"`!-)-%`HSqaVcK5NGR(8XH`D6YpK*j@lDrDFX8h9TqY
MS@fdHHGPI1jHHXqCN3C-C$bI!%%J"0M9''MN'NC-RFAPe(0c`!PfZ[)V%-#%+5P
J(3LSd*AR919kEaUELZ3#(jc)Mhi,Nm)6QZ#BT`JS*SG*M"M#)!BfG%B-05&BHiL
5PE4XT#D4BFSF8L1lq8%-HJ9*JPLq3jD`r+`YfUN63r48"r$N58Ad!BmCRP14KFN
!"(Z+dh2HB)ERd@mP61QF#D'fN6*8,c6lN`YqC"FlTUPJIX,6'JTkGkP-U5!&+&#
"ZU#3!!BmY*%Jm@*)Te+3!+Sb*Q!P1B&4$42J0ie3l&'GBN%BI$,)3YU%$I9EC!T
B)$cjpH&jPm5KS(!#"lPJ55X*dmkQJN-c3UA[,ZL*eXS#eE%bELT5Bh""rVUe+Gf
4U8QSD@9&K'FdP&'X$"EldH`B!NXAf%&VYI4"pqL!5j)eE*Gk(*i2DZBFCdCTD3P
S`Yr+`#lFZ@%NVj58,*-@U5X3UR"&1Tb5*JN#qB8cPXIF'4,5B%ijN!!"R3P4*ah
BfD*rCG*ZHLU$8j6LaN84B5UlBiUi`ZB[9E&+-bKi&USZe!F!!JKPGQ9ZG(-ZBfp
h,Q-!N$0849K85d&)6!%!SG$Yq+(5D3B!N!B)JJ#3"J80!!$2+J!3!"!!%(H5,e3
d!+%#4"NlCGc3QH0L$)J@)-M8BF1'"3JaEq5NFA2')%+&)1$)H61Qc*`j'mqi'+M
L43-lEp+3!!&"j%f4M`Y4T'L`Td'#Q`RT5#Nc*Z0-1QM+!&@iSi(2+ARQd#R6KNU
B1@Yd0Nf3!-B-#"3KMT5Kik3-(MT,kD!i@%C1RV3@65"9LM0&#K"baYD4ifEVR$Y
Tk)a"Jf*Z@KGhd)5KFlGRJM&Abi"SmkE1R$)ellM4i60"c5D9,kG&)6GTfK4E%iM
*'fE09XLA3D`TNbIcCTq`*BHT3qI0%YUF%hMf6AYdDET"8AGHADEekmJJkX!KXjJ
ZRH$$Udb[EYa`hG6-RH1'(QB-R64fZ0ZjhVPQ%22Se3FPl6djH0DZIC)TBfBh'rE
#KCGI!Rf!%"!)I`8ff&Ie+B5BBS`4j&)I6Rd@'R)+VEAH6QN09C3F-kP`%"e01AE
&4Q5mF3F8G-J"`P`RZT(L(9ZC049I)(K)4d4bK(''MPZam3C(Nb98ae"c6%5(4@k
8FFF8DHK44P-q*5JBB8DJ'11-'Y,4JJq*Y99'A$#LU+*G)$L@'`JE%@(5'YJ*q&a
X'c9KT""Kb)&G'dBLU53)2B"JTaYe6&%''d5T0H+ABHDPR("GIF8RSAlq"i)*)-#
!KaQFQJ($Tc$F9G-3El644KJb&TE8PLTD01Q4*LRjU'Vic5RC4P$0`HSGf18k94Y
$X*(''&Q0D&'C-TjjAh-$VVN4U3S&K9fNUTDa+`JK"'V%5!VYUP0MR5838,J%JC!
!K&GcJ3"BXRH`13F)EVbaBlTQF,XNQh5Fm'kmmbC&EN&RS2''91UDf5j%Fl`4NF,
TKJ'(5'q)P%Ce,k+4%J[rAX3E68miF3)9)%"'%3L')QUHYbQX*&`#jBD"B"eRR'(
5H81kqk,#Xj8"aiXp%J[#'elP8CQ,,GDK'h`)CEcZM##J1P-GEPJFX,!"laMBXDe
**[4Hm$VC00+5,DeLaNk(Y(&J&j9KXB`JE1eL`!2[+(Dl+&`Q@4*0J'$&'fbBDa%
F,S!J!`ifC'a'4K9,aUp*6@1dFBST9Cc'((F"KK6*#C%KK0SSkR4X8Qk%(!C&'51
4KV"6SIack'LMN!#L'bIXH,JF-XqVm+PbV)&[dqpQm8398RapAY)VPcZhbX**f"Q
&!GBk(TeZ%0(M'GJe8G[dhL)lSd@,JTP8AR'4-Ef1&KN4""06&$'VR-rIkXB4)r(
D@C024LPCS2#VQ2fU"R1r(U2I'p1Pa1FM(Fd+5P,DRlAk"`)Q[1%+4N%"r4"BKK4
Ba(33"*%%R84"#i)J"ZYchQ1JXj%M[#%)G`K$(UEP&443S@GV-#%+99LYAIR25pi
6%jSF3k$PL(!rr9&5R%4))3SeS#DrH3Y1ZX3KR(M)+!3C8BPm)L3L[DT5*2+*6kM
92FU3!+%VD@M,Zc!eKMD3!#'*i",1J9iP'pSB*!jeL!qL30+5cP`a9TB+e+$UN!"
%&+"J-(P+3CHqa+H6q%JbQ0)8Tqbb&HBG+MD1+@+&hU!GkNaP0#0UBP#H#+)SVQH
+4R32dZ56S8`fS%0%JD+)2XN6Rib,C3@KJXAH0ER%m@aBDmK$52)N0iXY+!NJ3&3
B%-+lTSA1,'dC`q3NdaYEXQBrFQL"6mUe04!SKTM0,-r`+)Dir@Jc2P1ajBIbBTk
#XHYG9qPD'IC$"T@9#jK)fBMZ[(JSNlcVLk0l`aRH"CL4R3%p@UX-cbSM"N5jXii
8!J!#"fGSEh0d,Q0MEhFZB`#3-e4&@&4,38K-!3#Kd08ZSG*UX`#3"J0P!*!'!N`
!!"*&!"!!%!!3YbF[9$3!S3,%'64[jY"a-3C%#a"Y`U4a!`*1'$Pd3,`aBa#K3K"
NbV4j8e(1Qc0b`V4K!@)+R6*fbS"!%ZB1Qc*j@-CiN32'`)*c%0i")43%(C)4emK
midEQRBPNhJb&8dE1R$3I*i)38fEL'4"Ka,b*D4506$PP&,ViqD+"P$*M-T**HHC
Yh"d0MU3d!q804SKjqQ,%fq!+9+PfrC)aD"H[B6G4ld#K)kGM3MU2#6q1R&M1BMG
ei6Sq,*Nb#0!H-8mN((%LLK30pM4)N!$%64SkHX1B3@'#MPR"G&,JT@eE0@5TFei
2Vhfl54NhGC),RmfFMK'QG+32Re+'6K8icU&VTekF5*S`E%iQKm&NHJ,ZG)E8XHU
Apd@6Gpc2IN,9$A$HE36Q9h!lJ"!3#(I)e&3CLrQ'&3KXK2&5C5JN8GC%Dk4!8&X
*c"9'D('"d%0CC3$AJJp`$'JA(FZj-8Gh+r,Q)BKdX#5$MISPd%3B5Kf4QR+clDL
8%dcjH"Q3!,2GJ8BD0k%3JiC%[&&%6'jN"f3I$@3TC"P'+[4DE,-T*'%D$Dd)`P9
kb$6L(L$B!!0,EYSB*`JbZ!P#(i3PF0"PMiN)JK0Ph,'C9,b"b*)*D*E"NJKF30%
P(5,Sa&*8Bp64aR0d3'(5'#be%!-6NS,!hR4B0V!PN@imqU9X#BK*"jNJQ*QSRfc
5m#B)YYUB+jffhTNRDRaU05+JJT,''fKf(CVSSSd5Q9%B)$`D+3Ja62T'TCG@UHQ
e,,%AkUM$)F(NE@8-HJF+`#Vd'%Z8e9%'U3)!#@GSEh0dF(*[DRFZB`#3-e"56dT
,38K-!3#Kd03XSG*Uh`!!'5B!N!B2[J#3""rr!*!$%!!3!"#`JJ!!"!J)i!+[J"B
1#P3MK'"")@('V$NMjddG0f4!1+R$KJf))RE+Z+%cC`M""'I3[*P$"dj&03))3T(
b4-Q5)%LB$#3)a'(!Q69[jY`CX+I2SdG$3D2'iQJ'%a,,N!#KiC!!`C3m,-Zd!B'
N6"Ji0K`UJ#+R$*XhBFK)P5'@l"XkCFE!*6-$+3"A!!a!J"1'$P`jEN$3HI-'a&N
hCc+i+8bY5c83CLaL&&bi6GmaD%"3fe+0`q$+BGcN!I&Qc*JkFXUk'90Q$QNc!3I
!XdZlYZhEZ(2VhXflYqrI`)-,(dkmZ2(Mb*-VAmkmZI2Rd+0,RdkpZ[AVf0N49%$
JYJ+#"X!l$!!)+DL!!NM9[U!PB!P@XI%8Ed-K3-`#!BN#!11l1r*rrpJ(J(m!m%-
3Ild4H"`8!XB8%$i(pVHFJ%64%f'#b9'4KS!$%$4E3!MbTZ"a!MS8)Ka)38%3#!"
`m!-2!U8#$`%+["MMM"lB')#-"-LJ)ip1r$JM)8)53%U4aK4TMT!!"q3)iiiI$YK
F!&J%"!0q!"!KK495"%!&!#r3&p!r-!"JLdm3J#NQ!'5DLDDD&)aCjTN1T4PQR'c
1qHDGFVTC*japdNQ3!*eVYLPS3)6LDHLHKHVj*jpjqMNSS*%H#N#LJ6+UU+163VV
SSie+'K!$!AJ!`!F"X!##588"UN)!C"!8*M!!I"FQ0J#)S#Be!"LK*M3!X+%Q-`#
8SLBb!)bM*M%"F%"3$1d!)#0"'-!C""43-2($YMrN9ej!#'4+8,J!j*!!"kmjb"&
RZXJ1b+Y$E!%("#$Z1&'ZZNB"Qd-Fi2L8VV2TXTJZ#IHLF'p6kCDC,PATiR![M1R
fP#i4pb*a,a2hUTMZPqP@Q5iApr+AEUcTSR'[X1QLQ#iGpmUA,KrhPTFZ)IFLFLm
Mpd*b,bAhBR)[*rHHPkjkkD*b,hcT`R)[,IILFZp"kG+D,M(PdY&[$R6)6!I"1F`
"FpF#bm(1Ye3*G&)#CV-*i0S!JZ++-$&9kb!![M34a""I)Y"%4&6)mG8F!-JK5%!
J"m426!QJ[42EE)FLM4Uc!'""fJ+BFJ356d`"`!%TV85(#f2N"`SRcE3aHZQRY`'
!"J$-EBIG3b!4J!*lMp&9@QA)!AMS!!`1J0%2)UliQ)`$U"3p"Nqq8q90&1&%&CZ
h)9)GFi!Z1ZQQBjrkkUd6p2VGXY-HdHeUk3j!%3)TG3iXkV-2cIU58fj+mmp(2hh
e*UHrL5E[K,*rrrrMh[*-FB8N11&,#VK$'ND5"cLdaJ8Q3am![P8i!0"$H'NVR['
NNBE`9'Z!4E##m`#!J$+%C#69#jh*!T!!ZKCLMhZZJehiDNHqh1hZ@b'#"`BATd(
(U8%6,C+IPS*`"!!`J!Kq1m-9&NL'0pc"HQ83L!Y4pd,@a4"mXk1K9mTh`i!B,#$
DFFMFa'#fZ8Q!)!0"!!%XXd!3Z$%J"(JAGZC)R!8Ji3`)k)%ErZ'2Ir$$$+"!3KZ
`!3iRY%)!kX$#)jM`$3`!``PHf)J6V2!2G,b!!6"`!3Q4!)ab!#))lG#'&U)"M"C
!`Bp#1-8,A1"(3cC!(L$i3!Z!m!pm#''2pZ"2!%`!JMCSJ`QCr)Fp10N13%!$%LJ
!JK)S)D`!-)!"EJ!!IK$3"JHJ#!*0k3%XI'N$f!$!(TRF*$#JB8a'J!!)-$!C#PU
!K(q`!aB'!X!C!U+0F#+!Njk%KMQ"!!+$%@#@ri!(0&cK6S#L!`4lj!F))$$35L,
8Mb+!J$3)#Jm5X")IP##S*F%8J"F)`*!!$T!!!3KBbBj)%"3IUr4M5[(K5RhBNj2
Ne1FjKD$1@rk$(JJ53c$T!3YFRN%+[IcP6SPT6'3UNa*Rm!%dT8R#0M$JQYRFTMD
kUB+AGV+FjqcRJ'#K8ITB0Crl(+Nl)f%d!NKKMr6BU94Kd!C,R&@B`E6(@PAR$fQ
Ji!Z3!0c)*91C#K+!i!XS3!)SpB',)@L(&#$)4Q+GS!X!m%!*3$L$$#jT5!)NmK%
rD!&K-kX2A3MK$#m!J#Z&N!#$0ZM$&`"3"4+%43V+YS)!ZS$#)ea,!'%SmUk5T#3
pE'V,8pJS%DP%!Ki!P!Sqr(8&50!(1aK,!$S`GJ"Zf!%3p!%-)E4#(maiJ@ECB5-
#)#'KhlfT)28"M93d3V[k3%BUN!$3br5#!!S`-*J!S!!%kHU$'$$3V$5JB9TLf0F
Dk18ZM!M`!eEb3j!!&&$%H-[VL!$EU!$K26"DaiX0mqCA(pk!K'QeB9pMA0JD"ZL
*!ZaE6meUJlrk-)Cp[H&J'"@J`(j%X)*0@q%'EpG'p`6[K%d,$JYVeKXK"J!&l'Z
1&T-3aJHQMb6'ff0(Y*FG&cB(,%aQJ6G3`-'D0FH6If!`#R`f&4eimJkSV)mLEpH
3!"M3Kb)$M)SjF2D4M88'&@Dlh948i,Q)k*D1!SaQ2FJf[2j)*CS&)9Xfcb'BrM!
N!(4JYJ,m`aQe!S!$rS%XA6N"$J(S!5e4@ZG"S&HpNp8X-e)KJf$L!`aHH$0kSF&
CBRcDN!!"%-36hQ&%6Ip$(j!!2314@+N2aMTfc[cj"aii+`cdBS1caN![-f!YDeS
c`0DiMLbEV!$MAMH@#-"Q%a,b@SG*rJ-!pV3[-$lGVI"+b`MQ(LmZ8J'!"DF#"B`
0J$@kj@X%c*REhXC(Z+GEE&'A1k'T3,H1DfR)"`KJ"h[84fFTr'jI'`$IP-4(CJR
#!-lU!K8+MZEQbK53!1m8Kae#`)-#P0!*CrLD#Vif!`YiB%!LB)'a"A$$%I6a$f@
BJ"%cTl3*#*&baJS!&B`eJ!Pmc3eISq+c`J83%Yi`)#4F38FLd-%rC2&F36LK&QR
UCE#F!)P8d#-+q&#!&r`J@Pd)3"pi9!)NcN!!"!$ViA8!!3i8J!Fc-'$P@RL#%jb
RL`)3!!3-b,NC6!#)M@4KYM`J3K#S%)3[J`)%9hL[#2#3!!!%J+!"N!")4-kG3(K
3Z#!9SeMj&+JJK5N`eaNjYm(09kkP)M#"ZEi!!40!3)!c-#$HYL$!YiaS"RSi34m
&8)1hY4%%I#3!!L*i!Ka!i(P-3b-#@SL!0)!4"(d!3!*`+)$RUr#)TEFZ&CIJYJY
d*iI3cE`!lM!",K6!KaI-(4"Q%)!L0i+%Fp65"k(P!GM&$JB&(2i&#*!!#U835k!
!"$j(!QG!"$2R$lKJ!SL`8'GJ$L+J6*&J"TU8*X#`FN-J"Dl(A#a`"L5!IiiPHl4
RHlk'"lT(FEh(A0!3Ejc!5"r`$aX""`q3!!V*!(0m8'r-jAYa*h,X!!SP)(P))!)
Bd(p"J!iN4!F"3!JB!!h#%!A*F&13!)!)d*!!#2'h%EVLH5$JJb$!3L3J!P!`Drm
!$#$`"%*J0")3!fNJ*4B!#K83A'[)!'@B#[)J!aJ3Ejj!!PK3$F&!!aK!K'iJ!fG
J!9)3"'GJ!)9i"KU`%6+!!MF9ElJ`$9,!L)lSHlS3!)JJLC6iL*IS#01J#R`N5CI
S"$+3!!*'T!4VU!"Q`!&8)!4Um&4MB)05)!4QJ!qDf'fA5!A5`'i1F)[aaJDl+'Q
cD!B%F)Y$8!m3)!#q%!9Q3!d-%!B[BJE1-)`'S!"U8""m*!-KJ!9")!*kd!pm)!f
4)!P+F)Yf''m18!6)#!$9J!eq+&Q!L)!18)KQ3!'0b)N"B!&JJ!(hD)N!J!jJ%&+
9k'[`!!B2GiN5e3M6)!PBH)HA@)b6'(II#!%JS!2p!!&+!$aRJ!+0#!!SF!BL3!)
'J`&C)!4$%#d3-!e)5!$9N!!&-X!2,b)%'5!"50J$,bNM84!%CX!14`J!3*!!JN9
K"XD`%5#J"rc!$"9jP(,`$bb6N3&a"KMJ#`E6!fBJ!6CJ-"r*!03`",*39Q9!!#,
J6chjNlX("'CJ$8A*$kV`AJ33"*F#!m&J$NS!!m*JH)Jh"%p!"%A`!`H3!!U2p`9
3%(CH!!))X"%SB*4f)!*d8#f6S"di-!h,9JH(b3pH)!`'!J3Li)FB-*PQ)!f8B*K
'U35@kC1CL3%))!Qk`!p1!*VmJ!1MLCPq+&'TL31XD3+[@CS%B!#"-#LLq!qL8)U
RQ)TQF*!!ri!,B%!!M282eK#-$N#8Af#(IJJ,@(!&8BKVRj9Sm!!##[@F'"#GQ%#
GYkB%eqN%fDN2I`@G'!!,Yk3!N!!3"'eJ!0!!"%%`'`)!!a"`"YJC%#!3@J6`!Qi
*PU'&!#r`"8eh$M"#-#B3!%JJ"-3`$!Ec+NK3"-K3$04!"!XU"%)!$-%!$B,!5)i
P!Kp!P2cTR`-L!J%kS!8D!f8(!#ri$3$!##!USJ0#SJ"+3LMUAHHJSVjQA!(JS6!
DSR%hS[pTSMC+S$LUSih&!MiDSd%kSd0kSNCDIdKU4&fiT%#U")#J"KbJ")(`LN3
!#%33#,i'!Q'k%9rUDaE`T@9D"ebU"JT3TSeP!'GD"bi!)fSM#i!`"JDJ+bLb%E"
`#',!!)!3$%J!"'`K"%"3U"XK#i#U!CU%U)8kU)@+"%IJ!qef")i3$$"`!*3U!`H
`%3JD!1+!#1+3!!L-+JEi-+M!F!Jb-!$#!!`Z-!#8kJc!3+R5F!KPF*U#)!B%X+C
6!!4J3!jNYhpHm(m'`*Gq'8[cG"FQ!!6rY`!#D!)I!!),J!)$)!9(m!j(J+dkF!"
JB!('LUb2p`(,LJMBDJ!d!`"ri!rF&eUTB!S`m!(N8J"Q`!f"+AE28!5DF!5V#!)
$8)![!+fL!!)6X+aD%,#T)!NS-!8JX!5JN!!#Q%D8""!+(N#BbbS%JB@`!eZ`!@%
$$HZ[qaLZI6QZbbS#f*T9GVUZ!#Kj6*!!$F$JHD!A"Fh`$pU3!!R%B!*-%,&aY`4
+8!6%#!SMX"'J!+3b`!-b-J3+0j50K3C&5iG)Z`r`ePKFd,6cm,3Fi'Y3d,6dm,5
&DAe%X,*-*k!Q%a1@K`H9!`F-F%b`J!X#S!TQ3!+q4JC0#`qq4J40+`qqaJ08kfX
dS,@qTLTi93F`%!#KB!3NJ!4SU`4Qk`KU3!#Pi!&J)!!81lLJF!3`S*Uj!!,*F,P
1N!!2)+!-'c'iK5X#*S-!3cZi)*!!"*@l%3j"P&+($f`h8j!!`,TT8a!+N4$jFBd
[i!C!)!$b3"!F%!"Nj!##038@%a"kN!"hHdF3KV!%,8F3NR!&62!%V!)!RY"b94)
3US#AHYNpYU"iM%F3fM"kT8F3jY"k'"-3mM!&@G!%QK-3rM!%6Q!%4533#M!&5D!
&%T52'qKkq5%#4#!%99#r!H!#@-#q6C!!(ibQ(mr5$J5M0J&a!$3$,33")!&K!-i
#,Fi#`CXM(p$#)Ka-!'N#,IjK`G,%-c(!$JBL!#CF!"!b(J!5*`pJ-bQ-K"`F(J#
3!-)[E-)'d"dTr#%m(#iTE#%hc!!jc!lD`F,I"J!$B#(3JJ!@M--%%"23BX4+I-&
T)NBmM#F%FF9j85d%83"YX!CKJ!CX%!!b!!)!$QGSEh0dF(*[DLj5Fh*M!*!j)3#
FP866SG$dU!!!!Fm!N!B"C!#3"'S%!*!$%!!3!"$D*3!!"!JSm!p"J`'KS2(4B%3
D0f2Be#&6"J52*QAD[*'6TmNC15i@0R`BXBk$-fMHc+%$4miE05kNc*%c4Si!JMK
aKJJ)*'I1R3"kiL4%5Th!!c"m#TM%U4+4D6i$2!2a3J8)13r2c!%"Ti`F%(2JS2&
D8F@,KK602+`i"BU8)%4!a+J"!`49Uh,#N!"*8fIV'c-Jk)`&+jBX#,-09XUT-iB
1eaPN31aTN!$JS@-m,%$NbDaR"q8qK-I++E0&#T5f5)T)+G*P#a5h5C`FkH*CF4f
#,`!%mKR`Rqpp")bNB92QJ*XhJV2L$0!#*i%SGG,3!4$&*a)!JRJ$m2d2H*'pG!K
8F82Q$3!Y!CRM($#NcR3X!3N-H3-R$i!K!3Y!#E1b$!!Vq3e"A"Kbm$C3HJJ"N!!
J&!#!-!Nb!lK#%!F!q""3%d8i8B9!!#LJ'fmKj%!%GJ!N30!-!)3)"J,#%BH4'h8
Jm*ed,pB"!!)(E@9ZGA-ZBfpU,P*cFQ-!N$&849K85d&)6!%!SG$9ND(3p#J!N!B
%1`#3"J,k!!"HY3!3!"!!%-H))p+i'F1Q$TNb)%5d+H1QcK`AD%3d#$L`i-'%G`6
5b31Rc-1)$4SdB9J(54JhC0L856#biCBCAAD%R&+'6K8i,4fL50&J6i-%FXUF561
(6KNj)$3QPCRJj`X9)0U%@B13!!iDK'(J`&%CP53)&5pqjY`#S`Z)(L#FP,Q6%d8
3+&#B&2R5T)L6+L`5FS(#"BB-'L*5l!$a&%6@V3M(S!Q$&1c2)&SCNQNlYQaH%AZ
$L(P6K`i)+QL)ZKLp!d@,`%`,KpRF1DR40L!1QK'BKNkD0flbQRR$KXfE1fA)J"#
6ac#)-h,#&"I$1(DCf@k#$bpq`[5*Vf%6"#&$4ST(bL6*GXPlJSJ8+e*1##B-03c
hT'j!%!PbBJlfN!!X`mF`LrC)cEC'*#%AAAC9)CKBiFR!(`MqdG&@%83N33@"Gah
idfjbS*!!4Jm`$*B'$c0iZ-)++B#3!)3EFacP)%NSM*A'H#$!X&jKBY54"K[#-GG
BGN3NaaC*3M#fd`i*&%B'89XT"i*9#1PiAamK+8A%'d1mdBC8++&`"aajYH(G((@
`33G29`JNR!TEbZ5E'fG%p@@BG-MN8`)D*F"N%UrPa@416%e"Ka`be&"$!Qk%X4"
66N&&8"Kcc*(''&de"-)B9Q)TR"bFf4EGI8hCH4@HCF#'&K0[A2''('5Ji+9(F"l
SD4NjR38#%QQBLUUUEiVTkK`CdD%B##MX59+*Fil"+%*[a69AAAITm"1GCJ"ljfY
RS48$XFmqPF#8QQ9D*NUr$CQ!BDajaU4K@V(aD"LfiFCT!P!QN!"!'@bN#-+FmMB
)DKXYKQICNTrQ#B)*K5iN@*&3c3I#'ah&jjLm#6c4-"%HV4(%''1J3,#KCEJ+ll0
L"$898mED'q#!c&EKV,aT4"YX`+&@#m)-*4D"4fe8[$(&9Ed0#E,)Dj!!I#`)%%T
)SFV2YJaX#&2N895S44a*amYPl0[#YGM+'fm#)CFamNradUUZ8@h*1&KK"(NGAae
`4&V(F-dp("3GGFMK"JVAbJ3P!!)(E@9ZGA-ZD'pU,P*cFQ-!N$&849K85d&)6!%
!SG$R`D(3jl!!N!G#!*!(1!!!2d!!%!!3!"!UA52)P$'6aNdC%%'J3'&5j%Z6)Nk
UJ)JK!dH$J!-,(M55K+&$L")TjVJSN!#J34"&L#5KmM(La"N`!%[j!!!"!*!$!3#
3#"j&4J#3!`&19J!!51FI1#KZ!!JQ9$!Z!"T63'Fd8d"R)JpRD'pcG(GTEQ4[Gbj
cDA3#!*!$8dP8)90*9#%!N!C6593K8dP8)3#3'+(5D`B!N!B"(QX'S'NI!'!#(a#
J+5m-U+-f,J!-E`S[%MmZ!!ir!kL&)%T+H!+1D`B3(k"UB!)3RdSZ!"KQRQ#1!!!
#C'!+!!"'5d9C!!-!!%j@r3a)jrrmF#G#Ce()rr`-H$rr!SjQ'%+RULNQAbC6*QX
!&LC6$'X!!3!JCJ!"hN+R,`qT%#*INS%!!!%!N!-"!*!)(J#3#4`!([rrpf8:
------->8----cut-here----8<-------------------------------------
Steve Hawley
sdh@flash.bellcore.com
A noun's a special kind of word.
It's ev'ry name you ever heard.
I find it quite interesting,
A noun's a person place or thing.