America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, January 8, 1991  10:00 p.m. Eastern Time
Topic:  Toolbox Programming
Forum Leader:  Dave Sugar (AFL Dyfet)

AFL Dyfet  Tonight's toolbox night :)
AFA Gary J Yep :)
INF2       Is it the toolbox today?
AFL Dyfet  Yes it is Inf2...In fact, I think DevScott had the first question
          for tonight.
INF2       Today, the ToolBox...  Tommorow, the WORLD!!!:D
DevScott   I am trying to learn more about the GS and programming it by
          creating a simple
DevScott   paint program using pascal and am having problems with an about
          dialog
DevScott   box "disfiguring" the drawing window behind it.  What do I need to
          do
DevScott   to preserve the drawing already done?  GetPort/SetPort stuff?
AFL Dyfet  GA Winkie....
WinkieJim  Is the window behind it getting the partthe dialog covered
          erased?
DevScott   What was that?
DevScott   The part of the window the dialog covers is filled with the
          current color
DevScott   selected (a different problem).
WinkieJim  Is the window behind the dialog just getting erased without being
          redrawn?
WinkieJim  Not the background color?
DevScott   Well, I'm not quite sure...
AFA Gary J Probably the background color.
WinkieJim  Is it white?
DevScott   The color is selected using
DevScott   SetPenPat, but when drawing, the color drawn isn't what was
DevScott   selected?  Hard to tell.
DevScott   Not always white, though.
WinkieJim  Scott, you do redraw the entire window when your update routine
          for that
WinkieJim  window is drawn, right?

DevScott   I believe so...what exactly do I do to make sure that it's done.
DevScott   <---- sorry, kind of a novice here.
AFL Dyfet  That's okay Scott!!
WinkieJim  In your update rouine for the window you're supposed to redraw
          EVERYTHING
WinkieJim  that is displayed in the context region of the window.
DevScott   So, do you have to set up a routine that "remembers" everything
          the user
DevScott   did draw?
WinkieJim  Right Scott
AFL Dyfet  Yes, Scott
DevScott   Well, I'm still a little foggy about how to do that, but I'll do
          some more
DevScott   digging to see if I can figure it out.
WinkieJim  Scott you could also draw everything to the window on screen AND
          to an
WinkieJim  off-screen window and then copy all the pixels to the on-screen
          window at
WinkieJim  update time.
DevScott   PPToPort, or is that a little different?
WinkieJim  I believe CopyPixels is what you'd want to use
DevScott   Ok, I'll try it out.  Thanks for the guidance!
DevScott   <-- Done.
WinkieJim  Good luck Scott.   GA
DevScott   :)
AFL Dyfet  Okay, go ahead Steve....
SteveB     Just wanted to thank the people who helped my figure out....
SteveB     how to handle what SFP gives me. Nice guys here! :)
SteveB     And, I have to be leaving, so g'night all! :)
AFL Dyfet  Thanks :)
SteveB     GA :)
AFL Dyfet  Okay, INF2 has the next question...GA INF2...
INF2       Well, actually, not much of a "question", but I'll GA...
INF2       Well, it's only been one year, since I've got my IIGS, but I don't
          understand
INF2       the ToolBox at all...  Do you need stuff like ORCA/C?
INF2       Or APW?
AFL Dyfet  A good place to start, actually, is a wonderful book Michael
          Fisher wrote, the
AFL Dyfet  Apple IIgs Technical Reference....
AFL Marty  Who? :)
INF2       The "Technical Introduction to the IIGS"?
AFL Dyfet  It is published by Osborn/Mcgraw Hill
INF2       Oh
AFL Dyfet  It was the first IIgs programming book I started with....and still
          use it for
AFL Dyfet  reference from time to time....GA Dave...
Dave Lyons If you do any real toolbox work, you definitely want the real
          reference manuals--the stuff
Dave Lyons in Toolbox Ref Volume 3 wasn't even conceived when Fischer's book
          came out (and you want the
Dave Lyons official books anyway).  ga
INF2       Well, can't I use ANY part of the ToolBox from GS/OS itself?
AFL Dyfet  That is true...at some point you will want to get the IIgs toolbox
          references.
AFL Dyfet  GA Gary...
AFA Gary J As for languages and such, yes ORCA/C is one you could use, but
          you can also
AFA Gary J access the IIGS toolbox from assembly, Pascal, or even BASIC on
          the IIGS.
INF2       BASIC?
INF2       HOW?
AFA Gary J You can even experiment with toolbox calls using Nifty List CDA
          :)
AFL Dyfet  GA Marty....
AFA Gary J Not Applesoft BASIC, but IIGS specific basics.
AFA Gary J GA
INF2       Oh...
AFL Marty  I started reading a good book on toolbox programming last
          night...
AFL Marty  it's called "Mastering the Apple IIGS Toolbox" by...
AFL Marty  Dan Gookin and Morgan Davis.
AFL Marty  I got through about 60 pages or so.  It goes at a rather good rate
          for me
AFL Marty  (I'm the rankest of beginners)...
INF2       But you see,
INF2       I don't have ANYTHING I can use to acess the ToolBox, I think...
AFL Marty  You can experiment with toolbox calls from BASIC or from the
          monitor.
AFL Marty  GA
AFL Dyfet  Or from Nifty List :)
AFA Gary J (Or Nifty List :)
INF2       I only have AppleSoft....
AFA Gary J :)
AFL Marty  Or from Nifty List :)
INF2       And what is Nifty List?
AFA Gary J (Nifty List is available in our software library.  It's a CDA
          written by
AFA Gary J Dave Lyons)
INF2       Oh.
AFL Dyfet  GA Dave :)
AFA Gary J :)
Dave Lyons Nifty List got its name because its original purpose in life was
          to disassemble ("List")
Dave Lyons assembly code with extra information displayed in the margin (the
          names of toolbox calls, for
INF2       But what is it now?
Dave Lyons example).  It's grown into a generally useful tool for learing
          about the GS toolbox and OS, and
Dave Lyons for debugging GS programs (yours and other people's).
INF2       Does it come with Docs?
Dave Lyons Starting with version 3.0, you can make toolbox calls
          interactively and write your own commands
Dave Lyons if you want.  Sure, docs are included, and most of the information
          is available right from Nifty
Dave Lyons List (by putting a "?" in front of the command name).
Dave Lyons ga
INF2       OK...  Thanks Dave!:)
AFA Gary J BUT, I'd like to add.... it REALLY HELPS to have manuals of some
          type
AFA Gary J guiding you along in making those toolcalls.
INF2       Uh-huh...
AFA Gary J :)
INF2       I'll D/L that right now.
INF2       BYE!
AFL Dyfet  Okay, GSShadow has the next question, and the floor now...GA
          GS...
GSShadow   Ok. this should be qiuck. First, where can i find info on the
GSShadow   QuickDrawII 'picture' format, the one used with the Draw Picture
          command?
AFL Dyfet  GA Dave
Dave Lyons Apple IIgs Technical Note #46 (this was revealed to me by page 6
          of the Apple II Technical Note
Dave Lyons Index, amazingly enough).
Dave Lyons The information is provided for
Dave Lyons debugging purposes, mainly--the format may be extended in the
          future, but it isn't too likely
Dave Lyons to change soon.  ga
GSShadow   O.k. I thought It might be in the tech notes. I have been waiting
          of APDA's
GSShadow   compilation of tech notes. How can I get tech notes sent to me? Is
          there some
GSShadow   kind of subscription?
AFA Gary J GSShadow:  You can download TN#46 right here on America Online
AFL Dyfet  GA Matt
Matt DTS   As of the new APDAlog automagically winging its way around the
          world, the APDA subscription policy
Matt DTS   for TNs changes.  Now you can buy a complete back set and a
          one-year subscription independent of the
Matt DTS   calendar year (for example, if you subscribe in September 1991 it
          goes until September 1992).
Matt DTS   GA
AFA Gary J (That sounds good :)
Tamira     when does the new APDA cat go out Matt???
Matt DTS   Dunno.  I have mine already.
WinkieJim  Tam, I got mine today
AFA Gary J Tamira, mine came yesterday.
Tamira     sigh again.....and again  :(
GSShadow   THANKS. Also, for some reason my program (asm) is not getting
          update events
GSShadow   for my modeless dialogs. I have used taskmaster, and the is
          Dialog/Dialog
GSShadow   select combo but I cannot get my dialogs redrawn when they're
          covered by
GSShadow   windows. If it is covered by a modal dialog, everything owrks
          fine! Help?
AFL Dyfet  GA Dave
Dave Lyons GSShadow, the least painful way is to not use modeless dialogs,
          and just
Dave Lyons use regular windows instead.
Dave Lyons The Dialog Manager should be automatically updating
Dave Lyons your modeless dialogs during DialogSelect, though--I don't know
          what going wroing, unless
Dave Lyons you are expecting it to draw something *other* than your dialog
          items in there.  (That is, if you have
Dave Lyons a wContDefProc that you expect the system to call for that window,
          you will be disappointed.)
Dave Lyons ga
WinkieJim  I love it when Dave saves the painful stuff for last :)
GSShadow   O.k. My problem is that I want to get input from controls without
          having to
GSShadow   select a window, and I was hoping to accomplish that w/ a modeless
          dialog.
GSShadow   I guess I can get around it.
Dave Lyons Okay, you want the user to type
Dave Lyons into, say, a Line Edit control while the window isn't in front?
GSShadow   No, I want the user to be able to click on an icon  while the
          window isn't
GSShadow   in front. (same difference)
Dave Lyons I don't see how modeless dialogs simplifies it--
Dave Lyons what's stopping you from calling FindControl and TrackControl on a
          window that's not in front?
Dave Lyons (It's just that TaskMaster doesn't help you out as much there.)
GSShadow   I was hoping it some magical property I could use to my advantage.
          But I guess
GSShadow   not, Huh?
Dave Lyons (Not that I've thought of, anyway.  ga)
AFL Dyfet  Okay, Nuzz, you have the floor now...
Nuzz       If an App that does NOT have a resource fork wishes to open other
          files RForks,
Nuzz       must that app issue resource startup/down calls, and if it does
          have to and
Nuzz       doesn't, what are the consequences
WinkieJim  Yes it must startup and shotdown the resource manager.
AFL Dyfet  GA Dave...
Dave Lyons Yes, your application has to start and shut down the resource
          manager--but StartUpTools and
Dave Lyons ShutDownTools take care of that for you, even if your application
          has no resource fork.  ga
Nuzz       OK, how about Da's in the same context?
WinkieJim  Yup, if they are going to make resource manager calls.
Dave Lyons In system 5.0.4 and earlier,
Dave Lyons StartUpTools and ShutDownTools must *not* be called from a DA, so
          you have to do your own
Dave Lyons ResourceStartUp and ResourceShutDown calls from the DA, as shown
          in GS Technote #71.  ga
Nuzz       OK. Done
AFL Dyfet  Okay, go ahead Foreigner...
Foreigner1 Coupla quick Questions: 1. Should a LocInfo BoundsRect ever have a
          v1 of -25?
Foreigner1 That's what I get with a GetLocInfo call on the samples from
          ORCA/C...
AFL Dyfet  GA Dave
Dave Lyons Yes, the BoundsRect of a QuickDraw II grafport that points to
          video memory is the rectangle
Dave Lyons bounding the screen, in the local coordinates of the window.  So
          if the top line of your window's
Dave Lyons content region is on scanline 25, the boundsRect.v1 of your
          window's port will be -25.  ga
Dave Lyons (BTW, you can use Nifty List to quickly check on things like
          this!)
AFL Dyfet  :)
Foreigner1 Okay, thanks.  #2- how do you do Icons, when the header file
          states the length
WinkieJim  Dyfet, do you think we should have Dave pay fro all his
          commercials? :) :):)
Foreigner1 of them to all be one?  (The QDIconRecord in QDAUX.h)?
Foreigner1 GA
AFL Dyfet  :)
AFL Dyfet  GA Dave...
Dave Lyons What?  Most icons -don't- have length 1.  How are you determining
          that they do?
Dave Lyons Are you examining Finder icon FILES, or individual icons?
Coach101   Dave, I think he is referring to the struct/typedeff in the .h
          file....
Foreigner1 The struct definition in the header file states, (and I quote)
          Byte iconImage[1];
Foreigner1 Same with the cursor definition in Quickdraw.h
Foreigner1 GA
AFL Dyfet  GA Matt
Matt DTS   (I found it just before he said it) That doesn't mean the icons
          are all one byte long.  It's some
Matt DTS   kind of C hocus-pocus to define the structure so you can access it
          later.  Someone who actually knows
Matt DTS   C will have to explain it in detail.  GA.
Dave Lyons Ah!  Since icons are variable-length, you can't really write
          structures for them in Pascal or C;
Dave Lyons those are just templates you can use as a starting point.  If you
          want to use those data structures,
Dave Lyons make a copy & make one with the height and width you need.  Ditto
          for QuickDraw cursors.
AFL Dyfet  So you just use IconImage to reference the FIRST byte of the
          image....
Foreigner1 Gotcha.  One last (easy) question- Address/Phone # of APDA?
Dave Lyons 1-800-282-APDA
Foreigner1 ga. I'm done!
AFL Dyfet  Okay, A2 has the next question...GA A2...
A2GS       2 short Q's.....1) Do Apple Dealers still give the system disk
          upgrades?
WinkieJim  A2GS, yes if they want too...Apple doesn't require them too...
WinkieJim  if you have a good one they should allow you to get a copy of the
          latest
WinkieJim  system.
A2GS       I'm currently using a 1987 ver. of AppleLink (developer ver.)
          has
A2GS       there been any upgrade for II users since then???????
A2GS       GA
AFL Dyfet  GA MAtt
Matt DTS   Send me an AppleLink with your name and system configuration and
          we'll talk offline.
A2GS       huh?
Matt DTS   Using '87 AppleLink = you have an AppleLink account.
Matt DTS   Use it to send me (DEATHERAGE1) an AppleLink that contains your
          name, your system configuration and
Matt DTS   we'll talk about upgrades.  GA.
A2GS       oh...o.k......now I see....need to get more sleep  :)
AFL Dyfet  Okay, are there any more questions for tonight?
AFA Parik  (I read somewhere that AppleLink will [soon] allow anyone online,
          alaCIS/GEnie)
AFA Parik  (er, I mean you don't need a Mac...you can use a IBM.  still need
          a acct!)
A2GS       got a Q...
WinkieJim  We have a question!
A2GS       Is there anyway to force the Cntrl-pnl NDA to come up without
          using having
A2GS       to use PDM's?
A2GS       GA
WinkieJim  PDM's?
A2GS       pull down menus
WinkieJim  Oh....:)
AFL Dyfet  GA Winkie
DangardAce Someone write QuickeysGS :)
WinkieJim  I Edited the Control panel NDA file to have a keyboard equivalent
          :)
Coach101   Cheating :)
A2GS       I'd prefer NOT to do that....any other suggestions?
A2GS       Dave...Matt?
WinkieJim  Only way I know, until someone creates a macro program that
          simulates mouse
WinkieJim  movements to the event manager...
A2GS       Matt...Dave?
Dave Lyons There's no built-in shortcut for opening the Control Panel NDA,
          no.
WinkieJim  Well, I like keyboard equivalents for NDas...I wrote the only NDA
          that has
WinkieJim  a keyboard equivalent for it's menu item :) :) :)
AFA Gary J You could use CTRL-OA-ESC :)
A2GS       sorry won't cut it
Nuzz       How do you know someone else won't use that Key combo Jim
WinkieJim  Nuzz, I took a chance...the new version will have it selectable by
          the user. :)
Coach101   There is the OpenNDA call that looks like it would do it if.....
Coach101   you could come up with the idNum to pass it.  Does anyone know how
          to "safely" find the idNum?
AFL Dyfet  GA Matt
Matt DTS   Keyboard equivalents for NDA menu items aren't such a good idea -
          depending on the (unguaranteed)
Matt DTS   search order of MenuKey, either your NDA or the application's menu
          item that share key equivalents
Matt DTS   will never get to use it.  If it's yours, it's OK, but it's not OK
          to take the applications.  GA.
Coach101   Matt, can you safely run the menu manager's menu lists to find a
          particular NDAs idNum and
Coach101   then call OpenNDA?
A2GS       Is there any "safe" way to find out the ID assigned to the CP
          Nda?
Dave Lyons Coach, it's not guaranteed, but it's reasonably safe to call
          GetMItemName on 1, 2, 3... until you
Dave Lyons find the DA you're looking for.  It'll work.
Dave Lyons You may confuse some applications that way, though--it would be
          better to make
Dave Lyons the application think there was a mouse-down in the menu bar, and
          then make MenuSelect return that
Dave Lyons ID.   This way if the app does some housekeeping when it opens an
          NDA itself, it will still get
Dave Lyons to do it (not all apps let TaskMaster open DAs for them).
Coach101   So, then one could cause any NDA to come up by looping on
          GetMItenName till they find the one
Coach101   they wish to start and then do an OpenNDA with the resulting
          idNum?  We solved ?'s problem!
A2GS       how do we check whether we got the id for the CP?
Coach101   A2, remember Dave's caveats about confusing an applicatoin (but if
          its your application, where
Coach101   is the confusion), the Get... call will give you the menu name of
          the NDA (I think) so you just go
Coach101   on looking until you hit the end (some sort of error return, I
          suppose) or get an equality on the
Coach101   name you are looking for.
Coach101   ga
AFL Dyfet  Okay, do we have anything else for tonight>
A2GS       thanx...will study the matter further