Max asked: >1. I have maybe 4 or five windows open on the screen, all staggered >so the titles show. >2. The top window is the active window, say #5,( number 1 is in the back). >3. Now I click in the GoAway (close) button of window number 2 >(which is inactive). >4. Window number 5 (the active one) wants to go away. > >Problem: > >The event is a '_inGoAway' click. So far no problem, but, how do I >pick up which window that click was in because it does not generate >a title bar click or content click for window #2. > >What I want: > >I would want window #2 to become the active window first (maybe) >before the GoAway action is handled so the correct window gets the >dispose message. > >I need some way to detect which window the GoAway click occurred in >after the GoAway event is picked up but before it is disposed of. > >What am I missing here. Max, While you can roll your own events, why not use FB's window Dialog handlers? They're a lot less trouble. At any rate, maybe something like this (written hurriedly off the top of my head as I head back to work. I borrowed the FB gFBEvtPt& global in my rush.) Ken local fn DoEvent dim ev as ^EventRecord dim @ thisWindow as ^CWindowRecord dim as long windowPart, done ev = event select case ( ev.what ) // Detect mouse down case _mButDwnEvt // Find where in window mouse has clicked windowPart = fn FindWindow( gFBEvtPt&, thisWindow ) long if ( thisWindow ) select case ( windowPart ) // If mouse click is in the Go Away button... case _inGoAway // ... animate the Go Away button... done = fn TrackGoAway( thisWindow, gFBEvtPt& ) // ... and close the window... call DisposeWindow( thisWindow ) // ... and return to event loop ev.what = _nullEvt end select end if end select end fn on event fn DoEvent dim as long i, x, l, t dim as str255 s dim as rect r setrect( r, 50, 50, 350, 250 ) x = 5 for i = 1 to 5 s = "Window " + str$( i ) window x, s, @r print "Click my Go Away button to close " + s offsetrect( r, 20, 20 ) x-- next i do handleevents until 0