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 <grin>) 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.]