[comp.sys.mac.hypercard] Problrms w/ xwindows

stevenl@szebra.uucp (Steven Loomis) (11/08/90)

(sorry this was in the wrong ng)
From stevenl Wed Nov  7 22:30:43 PST 1990

I am having problems with XWINDOWS. the code compiles right (this code just needs the handle types corerced) but the window appears, but then their is a bus error. This current code, MPW LINK says "data initialation code not being called". Please mail me and I will summarize to the net.
typedef struct
 {
 Point stPt,enPt;
 } 
 myPoints,*myPP,**myPH;
 
pascal void testWind(XCmdPtr paramPtr)
{
 WindowPtr ourw;
 Rect r,tr;
auto XWEventInfoPtr xwp;
 GrafPtr savePort;
 long gwRst;
 WindowPtr xw;
 myPH pointH;
 myPP pointP;
 
 
 if (paramPtr->paramCount == -1)
 {
 SetRect(&r,20,20,100,100);
 SetRect(&tr,10,10,20,20);
 /* an event ! */
 xwp = (XWEventInfoPtr)paramPtr->params[0];
 switch (xwp->event.what)
 {
  case xOpenEvt:
   {
   
   pointH = (myPH)NewHandle(sizeof(myPoints));
   if (pointH == 0L) exit();
   HLock(pointH);
   pointP = *pointH;
   SetPt(&pointP->stPt,10,10);
   SetPt(&pointP->enPt,20,20);
   HUnlock(pointH);
   SetWRefCon(xwp->eventWindow,(long)pointH);
   }
   break;
  case xCloseEvt:
   pointH = (myPH)GetWRefCon(xwp->eventWindow);
   DisposHandle(pointH);
   SetWRefCon(xwp->eventWindow,0);
   break;
  /*case xGetPropEvt:
  {
   /*if(StringEqual(paramPtr,"\pstpt",xwp->eventParams[0])
   {
   
   }
   
  }break;*/
  case xSetPropEvt:
  {
   pointH = (myPH)GetWRefCon(xwp->eventWindow);
   if (pointH)
   {
   HLock(pointH);
   pointP = *pointH;
   if(StringEqual(paramPtr,"\pstpt",(StringPtr)xwp->eventParams[0]))
   {
    paramPtr->passFlag = 0;
    HLock(xwp->eventParams[1]);
    StrToPoint(paramPtr,(StringPtr)xwp->eventParams[1],&pointP->stPt);
    HUnlock(xwp->eventParams[1]);
    InvalRect(&xwp->eventWindow->portRect);
   }
   else
   {
    if(StringEqual(paramPtr,"\penpt",(StringPtr)xwp->eventParams[0]))
    {
    paramPtr->passFlag = 0;
    HLock(xwp->eventParams[1]);
    StrToPoint(paramPtr,(StringPtr)xwp->eventParams[1],&pointP->enPt);
    HUnlock(xwp->eventParams[1]);
    InvalRect(&xwp->eventWindow->portRect);
    }
    else
    paramPtr->passFlag = 1;
   }
   HUnlock(pointH);
   }
   else
   {
   paramPtr->passFlag = 1;
   }
  }break;
  
  case mouseDown:
  
  DragWindow(xwp->eventWindow,xwp->event.where,&qd.screenBits.bounds);
  break;
   
  case updateEvt:
   {
   BeginUpdate(xwp->eventWindow);
   GetPort(&savePort);
   SetPort(xwp->eventWindow);
   pointH = (myPH)GetWRefCon(xwp->eventWindow);
   if (pointH)
   {
    HLock(pointH);
    pointP = *pointH;
    MoveTo(pointP->stPt.h,pointP->stPt.v);
    LineTo(pointP->enPt.h,pointP->enPt.v);
   }
   EndUpdate(xwp->eventWindow);
   }
   break;
  default: paramPtr->passFlag = 1;
   break;
 };
 }
 else
 {
 ourw = GetNewXWindow(paramPtr,'WIND',1029,0,0);
 if (ourw == 0L)
 {
  DebugStr("\pGetNewXWindow returns nil.");
 }
 else
 {
  /*GetPort(&savePort);
  SetPort(xwp->eventWindow);
  FrameRect(&tr);
  InsetRect(&tr,20,5);
  InvertRect(&tr);
  SetPort(savePort);*/
 }
 }
}

Please post to me and I'll summarize to the net.
Thanks.
--mr ball (SMUG BBS sysop) BBS:415-723-7685
--(Steven Loomis), (amoeba man)
--usenet: ...amdahl!apple!claris!szebra!stevenl
-- :)


-- 

/------------------------------------\
|     #include <StdDisclaimer.h>     |
+====================================+


-- 

/------------------------------------\
|     #include <StdDisclaimer.h>     |
+====================================+