home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / lang / skel_azt.sha / applemenu.c < prev    next >
C/C++ Source or Header  |  1986-07-08  |  1KB  |  57 lines

  1.  
  2. /*
  3.  *    applemenu.c -- handle menu selection in first (Apple) menu
  4.  */
  5.  
  6. #include <quickdraw.h>
  7. #include <desk.h>
  8. #include <memory.h>        /* see comment about NewHandle() */
  9. #include <menu.h>
  10. #include <osutil.h>
  11. #include <resource.h>
  12.  
  13. #include "def.h"
  14.  
  15. void
  16. applemenu(item)
  17. {
  18.     Handle                dum;
  19.     extern    MenuHandle    mh[NMENUS + 1];
  20.     char                name[255];
  21.  
  22.     /* For some reason, even though <memory.h> contains this
  23.      * declaration of NewHandle, it doesn't take effect (at least
  24.      * in Aztec C 1.06G,) so it must be declared again.
  25.      */
  26.  
  27.     extern Handle        NewHandle();
  28.     int                    refnum;
  29.     GrafPtr                saveport;
  30.     Handle                strrsrc;
  31.  
  32.     if (item == 1) {    /* about ... */
  33.         extern void    report();
  34.  
  35.         strrsrc = GetString(1);
  36.         HLock(strrsrc);
  37.         report(*strrsrc);
  38.         HUnlock(strrsrc);
  39.     }
  40.     else {
  41.         GetPort(&saveport);    /* run desk accessory */
  42.         GetItem(mh[1], item, &name);
  43.         SetResLoad(FALSE);    /* check for memory space */
  44.         dum = NewHandle(SizeResource(GetNamedResource('DRVR',
  45.             name)) + 3072L);
  46.         SetResLoad(TRUE);
  47.         if (!MemError()) {
  48.             DisposHandle(dum);
  49.             EnableItem(mh[3], 0);
  50.             refnum = OpenDeskAcc(name);
  51.             SetPort(saveport);
  52.         }
  53.         else
  54.             SysBeep(1);
  55.     };
  56. } /* end of applemenu */
  57.