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> |
+====================================+