Apr 92 Mousehole
Volume Number: 8
Issue Number: 1
Column Tag: Mousehole
Mousehole Report
By Larry Nedry, Mousehole BBS Sysop
From: Jmoreno
Re: Problem with PBControl
I’m having trouble sorting out how PBControl works. I’m trying to use it to get the
icon which is associated with a particular drive. I want to show the correct icon for
HD’s and CD-ROM’s as well as the icon for floppies. Any help or hint will be
appreciated.
From: Mrteague
Re: Problem with PBControl
What problems are you having with PBControl? I wrote a quick & dirty program the
other day (and it worked first time - amazing ) to do the exact thing you are
trying to do (and more). Basically I refer you to TechNote #272. But you need to do a
PBControl call with csCode = 21 (for the physical drive icon, or csCode = 22 for the
physical media icon), and the pointer to the icon (note : ICON, not ICN# or anything
else) will be returned in the csParam parameter (remember, some development
systems have csParam as an array of integers, so you need to coerce the first 4 bytes of
csParam into a Ptr - I think I used BlockMove). Also note that the icon comes from the
driver SOFTWARE (whether it be in ROM or RAM or disk), and not all drivers support
the call (you will probably get an error). Specifically, the Mac Plus will not return
you an icon. Hope this helps.
From: Jmoreno
Re: Problem with PBControl
My problem is that can’t get the PBControl to work at all for my HD’s or CD-ROM
drive. I get a error message which varies depending on how I fool around with the
parameters. When I have the params set the way I think they are supposed to be I get a
-56 error.
And yeah I know that THINK Pascal at least considers it a array of integers. I get
around the by using this: handle (@myControlPBH.csparam)^)^ this gives a pointer
w/o having to do a BlockMove. Could you post a sample call to PBControl that works for
your HD?
From: Mrteague
FILE: Problem with PBControl
That advice I gave you was for floppy drives, and I wrote it in MPW C. Attached to this
msg is an example of what you want, in MPW Pascal. I cut it out of a program I wrote a
long time ago, but I believe it worked then.
From: Deep
Re: Graf3D
I have forgotten where Graf3D is documented. Does anyone else know? I realize that
Graf3D is not a very fast way for 3D stuff, but I may want to “fool ‘round” with it.
Thanks!
From: Johnbaro
Re: Graf3D
Graf3D is not officially documented or supported by Apple. After much searching I did
manage to find 3 sources of info. (1) a 1988 MacTutor article (I don’t know the issue
offhand), (2) since I was programming in Think Pascal, I tried the Symantec BBS
(408-973-9598).
They have some sample code showing how to use the Graf3D routines. I also spoke to
someone in their Tech support dept. who sent me a Tech Note they put out that
documents Graf3D pretty thoroughly. (3) Through an Apple rep I was also able to
obtain a document sent to developers several years ago that briefly describes Graf3D
routines. Any one of these documents provides about the same info, so if you get a hold
of one don’t waste time trying to track down the others. Hope this helps get you started.
I’ve found that if your 3D plotting needs are fairly modest (line drawings only, speed is
not crucial) Graf3D can be pretty handy.
From: HenryT
To: ** ALL **
Re: Souped up Quadra 900
A friend of mine modified his Quadra 900 by replacing the 50 mhz crystal with a 66
mhz crystal. And it seems to work just fine. This makes it a 33 mhz Quadra 900 (the 66
mhz is divided by two). He says it speeds up MPW compiles by another 20-30 percent.
Has anyone else tryed this?
From: **Unknown**
Re: Empty Resource Creation
I have tried to create an empty resource in a small routine. I would like to do is open
an empty resource from a program. Everytime I try to do this, it seems as though the
handle is deallocated by some means. I have HLock’ed and HNoPurge’ed the handle
so...The question is why won’t this piece of code work..any help is appreciated.
place = PtrToHand((Ptr)0,rsrc,1);
AddResource(rsrc,’MyRs’,9,”\p”);
theError = ResError();
if (theError == noErr)
WriteResource(rsrc);
From: Sysop
Re: Empty Resource Creation
You state that all you want to do is open an empty resource from a program. You also
state that you can’t create an empty resource. You could use ResEdit to create one. Or
you could do this:
rsrc = NewHandle(0L);
AddResource(rsrc, ‘MyRs’, 9, “\p”);
theError = ResError();
if(theError == noErr)
WriteResource(rsrc);
To read the resource you can use GetResource or Get1Resource which will return a
handle to the resource.
The reason you weren’t able to create an empty resource with PtrToHand is that you
where setting the size to 1 (one).
Instead of:
place = PtrToHand((Ptr)0,rsrc,1);
Try:
place = PtrToHand((Ptr)0,rsrc,0);
But I think NewHandle(0) is a better way to go. You should not reference low memory
like that.
From: Ebishop
Re: MenuBar in a window?
I’ve been working for some time on putting a menu bar inside a window. To some
extent I’ve been successful. But I can’t help but wonder if there isn’t a more direct
&/or elegant method of accomplishing it. I’ve had to write my own menu manager to get
as far as I have.
I’m using Think C 4.05 (or above). I need to have 5 levels of hierarchical menus. I
need to be able to place the bar into dialogs, document windows, or HyperCard
xWindows.
I KNOW PEOPLE ARE DOING IT! I see it in desk accessories. I see it in SuperBoomerang
(super program!). Is it top secret, esoteric knowledge? I would PAY for definitive
information ( C source code ). Can it be had. I would think it would be a very popular
technique.
PS: I’m ahead of Jim Matthews article in MacTutor Nov. ‘88. I find it hard to accept
that it must be done like that.
[See the article on window menu bars in the Oct. ‘91 issue. It includes color,
hierarchical menus, etc. - Ed.]