Re: Making a window dialog wait for a user response (Win32Lib)
- Posted by Derek Parnell <ddparnell at bigpond.com> Jul 04, 2006
- 719 views
You can use the w32HActivate event to do stuff after the main window is open but before the user gets to do anything. This is one place where you can check to see if there were any errors detected and close the application before the user can doing anything. Here is an example ...
--------------------------------- include Win32Lib.ew without warning integer Window1 integer PushButton2 integer PushButton3 integer Window2 integer Msg integer PushButton5 integer ErrCnt sequence ErrText procedure PushButton2_onClick (integer self, integer event, sequence params) openDialog(Window2) end procedure procedure PushButton3_onClick (integer self, integer event, sequence params) closeApp() end procedure procedure PushButton5_onClick (integer self, integer event, sequence params) closeWindow(Window2) end procedure procedure Window1_onActivate (integer self, integer event, sequence params) if ErrCnt > 0 then setText(Msg, {"%d errors detected\n%s", {ErrCnt, ErrText}}) setText(PushButton5, "Abort") openDialog(Window2) closeApp() end if end procedure procedure main() -- Do some checking prior to opening the main window. integer fh object Line ErrCnt = 0 ErrText = "" fh = open("missing.file", "r") if fh = -1 then ErrCnt += 1 ErrText &= "'missing.file' is missing\n" else -- Check first line. Line = gets(fh) if atom(Line) then ErrCnt += 1 ErrText &= "The file is empty\n" elsif not equal(Line, "good one\n") then ErrCnt += 1 ErrText &= "The first line is not 'good one'\n" -- Check second line. Line = gets(fh) if atom(Line) then ErrCnt += 1 ErrText &= "The second line is missing\n" elsif not equal(Line, "last line\n") then ErrCnt += 1 ErrText &= "The second line is not 'last line'\n" end if end if end if Window1 = createEx( Window, "Window1", 0, Default, Default, 400, 300, 0, 0 ) PushButton2 = createEx( PushButton, "Open sub", Window1, 56, 176, 88, 28, 0, 0 ) PushButton3 = createEx( PushButton, "Close", Window1, 180, 176, 88, 28, 0, 0 ) Window2 = createEx( Window, "Window 2", 0, Default, Default, 285, 196, 0, 0 ) Msg = createEx( Label, "", Window2, 10, 10 , 200, 120, 0, 0) PushButton5 = createEx( PushButton, "Click me", Window2, 84, 130, 88, 28, 0, 0 ) setHandler( PushButton2, w32HClick, routine_id("PushButton2_onClick")) setHandler( PushButton3, w32HClick, routine_id("PushButton3_onClick")) setHandler( PushButton5, w32HClick, routine_id("PushButton5_onClick")) setHandler( Window1, w32HActivate, routine_id("Window1_onActivate")) WinMain( Window1,Normal ) end procedure main() ---------------------------------
-- Derek Parnell Melbourne, Australia Skype name: derek.j.parnell