Finding Out When a User Finishes Resizing a Stack
resizeStackmessage is great, under Windows you get the message only while a stack is resizing, and there’s no special message to tell you when the user is done resizing the stack (as opposed to the Mac, where you get the message only after the user is done resizing). The following code will let you trap for that event:
Note that you might wonder about why the global is there... why don’t you just do this:-- RIGHT WAY global gChecking on resizeStack -- Do whatever you want to do while the stack is being resized if gChecking <> true then CheckMouseState end if end resizeStack on doneResizing put false into gChecking -- Do whatever you want to do after the stack has finished being resized end doneResizing on CheckMouseState put true into gChecking if the mouse is up then doneResizing else if "CheckMouseState" is not among the items of the pendingMessages then send CheckMouseState to me in 10 milliseconds end if end if end CheckMouseState
-- WRONG WAY on resizeStack -- Do whatever you want to do while the stack is being resized CheckMouseState end resizeStack on doneResizing -- Do whatever you want to do after the stack has finished being resized end doneResizing on CheckMouseState if the mouse is up then doneResizing else send CheckMouseState to me in 10 milliseconds end if end CheckMouseState
CheckMouseStatehandler will be fired off several hundred times, each one generating a call to CheckMouseState - in effect, you'll have thousands of pending messages that will need to be purged before
the pendingMessagesis empty. You can see this by doing something simple like putting "Done" in the message box in the
doneResizinghandler; the word will flicker for a while before it stops due to all the thousands of pending messages that need to be purged.
Posted 1/18/2003 by Ken Ray