1. Win32Lib: setVisible (true) problem ?
- Posted by Dan Moyer <DanMoyer at PRODIGY.NET> Nov 02, 1999
- 483 views
- Last edited Nov 03, 1999
David, I think the problem I've been having with playSound "interfering" with setVisible (true) isn't actually a playSound problem, but rather a problem with setVisible. setVisible (true) apparently doesn't finish up as one would expect & other commands after it can execute before it's finished, delaying it. I made a demo in which a button click sets one label invisible, another visible, and THEN does a time delay, and while the first label does go invisible on click, the other one doesn't become visible until AFTER the time delay, even though the setVisible (true) is before the time delay. Dan Moyer Here's the demo: -- demo of problem with setVisible True not happening when it should; -- a time delay *AFTER* setVisible true demonstrates the problem, -- but other things, like "playsound" also invoke this same problem. include Win32Lib.ew without warning global constant TheWindow = create( Window, "setVisible True Problem", 0, 100, 100, 450, 300,0), CText2 = create( CText, "CText2", TheWindow, 40, 10, 400, 76, 0 ), CText1 = create( CText, "CText1", TheWindow, 120, 10, 240, 60, 0 ), DoTest = create( PushButton, "CLICK HERE", TheWindow, 148, 92, 132, 40, 0 ), Restart = create( PushButton, "RESTART", TheWindow, 148, 164, 132, 36, 0 ) --------------------------------------- procedure TheWindow_onOpen () -- TEXT TO MAKE INVISIBLE WHEN BUTTON CLICKED; MAKE IT VISIBLE FOR NOW: setText(CText1,"This text should DISAPPEAR on click, then new text should reappear RIGHT AWAY.") setVisible(CText1,True) --TEXT TO *SHOW* WHEN BUTTON CLICKED ; MAKE IT INVISIBLE FOR NOW: setFont(CText2,"Arial", 15,Bold) setText(CText2,"This text should have shown WITHOUT DELAY!") setVisible(CText2,False) end procedure onOpen[TheWindow] = routine_id("TheWindow_onOpen") ----------------------------------- procedure aShortTimeDelay() object w w = time()+1 while time() < w do end while end procedure ----------------------------------- --DO THE TEST: procedure DoTest_onClick () setVisible(CText1,False)-- visible test text should first disappear, setVisible(CText2,True)-- then invisible text SHOULD become VISIBLE; aShortTimeDelay() -- WITHOUT this time delay, second text displays -- right after first text disappears, as it should; -- WITH it, the second text DOES NOT APPEAR until -- AFTER the time delay, even though the time delay -- happens AFTER THE SET VISIBLE (true) COMMAND. end procedure onClick[DoTest] = routine_id("DoTest_onClick") ------------------------------------ -- RESET TO DO TEST AGAIN: procedure Restart_onClick () setVisible(CText2,False) setVisible(CText1,True) end procedure onClick[Restart] = routine_id("Restart_onClick") ---------------------------------------------------------------------- WinMain( TheWindow, Normal )