[comp.sys.mac.programmer] why do these things always happen to me..................!

sonenbli@oxy.edu (Andrew D. Sonenblick) (08/25/89)

      Ok, I'm not into premature hair-loss, but that is what I'm headed
      for (as in yank, yank!) Yes, I have a problem with this simplest
      of DA's (code follows)   It works properly--except whenever an
      application (including Finder) quits out from under it (it works
      fine under MultiFinder, of course).  What happens is that my Mac
      just hangs! (watch cursor comes up, disk whirs a bit, then hangs
      forever--if I use Macsbug and issue an ES (ExitToShell) it returns
      to hanging!!!!)	AND I CAN'T FIGURE OUT WHY THIS IS HAPPENING!!
      So I'm forced to ask the honorable and wise comp.sys for advice.

      ***** I implore you, if you would just peruse this code ******
		 and if you see anything wrong (or lacking!)
		     in it, please drop me an eline!
      *****  Thanks much:  Ando Moon.	 sonenbli@oxy.edu     ******

#include <MacTypes.h>
#include <EventMgr.h>
#include <DeskMgr.h>
#include <DeviceMgr.h>
#include <QuickDraw.h>
#include <WindowMgr.h>
#include <DialogMgr.h>
#include <MenuMgr.h>


DCtlPtr
      dce;
int
      already_open=0;
WindowPtr  myWindow;
Boolean
      windowOpen = false;



int	   DoOpen()
{
      int
      x,y;
      MenuHandle appleMenu;
      Str255 theMenu;
      Rect
      windowRect;
      GrafPtr
      savedPort;

      dce->dCtlFlags |= dNeedLock | dNeedTime | dNeedGoodBye;  /*no matter my
      dce->dCtlDelay  = 0;					 flags, it
      if (!already_open)					 still seems
	   {already_open=TRUE;					 to always
	   windowOpen = true;					   HANG!!!*/
	   SetRect(&windowRect,50,50,300,250);
	   SysBeep(8);
	   myWindow=NewWindow(0,&windowRect,"\pTotal UnFunNess",true,0,

      (WindowPtr)-1,true,0);
	   ((WindowPeek)myWindow)->windowKind=dce->dCtlRefNum;
	   dce->dCtlWindow=(GrafPtr)myWindow;
	   GetPort(&savedPort);
	   SetPort(myWindow);
	   MoveTo(20,20);
	   DrawString("\pHi, this is a sample that");
	   MoveTo(20,45);
	   DrawString("\pmakes mac hang after kiss!");
	   SetPort(savedPort);
	   }
}

doClose()
{
      int
      itemhit,x;
      MenuHandle appleMenu;
      Str255 theMenu;

	   DisposeWindow(myWindow);
	   dce->dCtlWindow0L;
}

main(p,d,n)
cntrlParam *
	   p;
DCtlPtr

      d;
int

      n;
{

  Rect tRect;
  Str255 str;
  GrafPtr savedPort;

  if (d->dCtlStorage == 0)
      {    if (n==0)
	   {
      SysBeep(5);

      CloseDriver(d->dCtlRefNum);
	   }
      return(0);
      }
  dce=d;
  switch (n)
      {    case 0:

      DoOpen();

      break;
	   case 2:

      {    switch (p->csCode)

	   {
      case accEvent:


      case accCursor:


	   break;


      case accRun:


	   break;


      case accMenu:


      case accCopy:


      case accCut:


      case accPaste:


      case goodBye:


      case accClear:


	   break;

	   }

      }

      break;
	   case 4:

	   doClose();

	   break;
      }
  return 0;
}



      Sorry about the odd spacing; it was just uploaded weirdly.  Again,
      if you have any hints as to what the problem(s) may be, please
      reply.  Thanks again.   Ando Moon

------sonenbli@oxy.edu----------------------------------------------------------