1. Win32lib Error 495 getHandle Failed.
- Posted by Urz <Urzumph at HotPOP.com> Dec 21, 2003
- 401 views
I keep getting this when running my example for a Wizard Wizard I am making (I tried to create a wizard from scratch but it was horrendously complicated and quite difficult to maintain) Here's My Code : Wizard.ew (Wizard Library, all quite simple) without warning include win32lib.ew sequence steps steps = {} sequence step_progression step_progression = {} sequence previous_step previous_step = {} sequence current_step current_step = {} sequence SFroutines SFroutines = {-1,-1} constant Default_width = 660 constant Default_height = 444 constant buttonheight = 24 constant buttonwidth = 70 atom width atom height width = -1 height = -1 global atom WizardWindow WizardWindow = createEx( Window,"Wizard", 0, Default, Default, Default_width, Default_height, 0, 0 ) global atom WizNext WizNext = createEx( PushButton, "Next", WizardWindow, Default_width-5-buttonwidth, Default_height-5-buttonheight, buttonwidth, buttonheight, 0, 0 ) global atom WizPrev WizPrev = createEx( PushButton, "Previous", WizardWindow, 5, Default_height-5-buttonheight, buttonwidth, buttonheight, 0, 0 ) global procedure make_step(sequence step_name,sequence items,atom onstep) setVisible(items,False) steps = append(steps,{step_name,items,onstep}) end procedure global procedure set_routines(atom start_routine,atom fin_routine) SFroutines = {start_routine,fin_routine} end procedure global procedure setwizardsize(atom nwidth,atom nheight) width = nwidth height = nheight end procedure global procedure goto_step(sequence go_step) sequence old_items atom new_index sequence new_items atom finder new_items = {} old_items = {} -- for step 0, because it won't be found previous_step = current_step current_step = go_step setVisible({WizNext,WizPrev},False) for i = 1 to length(steps) do if equal(steps[i][1],previous_step) then old_items = steps[i][1] exit end if end for setVisible(old_items,False) for i = 1 to length(steps) do if equal(steps[i][1],go_step) then new_index = i exit end if end for ------------------------------ Call custom routine defined by user if steps[new_index][3] != -1 then call_proc(steps[new_index][3], {}) end if ----------------------------- new_items = steps[new_index][1] setVisible(new_items,True) finder = find(go_step,step_progression) if finder then -- if find != 0 then it's true setVisible(WizNext,True) setText(WizNext,"Next") if finder = length(step_progression) then setText(WizNext,"Finish") end if if finder != 1 then setVisible(WizPrev,True) end if else setText(WizNext,"OK") end if end procedure global procedure set_progression(sequence order) step_progression = order end procedure procedure WizNext_Onclick(integer self, integer event, sequence params) atom finder finder = find(current_step,step_progression) if finder = 0 then -- Next button is acually an "OK" button goto_step(previous_step) elsif finder < length(step_progression) then goto_step(step_progression[finder+1]) elsif finder = length(step_progression) then if SFroutines[2] != -1 then call_proc(SFroutines[2],{}) end if end if end procedure procedure WizPrev_Onclick(integer self, integer event, sequence params) atom finder finder = find(current_step,step_progression) if finder = 0 then -- This should never happen. If it's not in step_progression, there --should be no back button. elsif finder > 1 then goto_step(step_progression[finder-1]) elsif finder = 1 then -- This should never happen. If it's the 1st step, there should be no --back button. end if end procedure global procedure WizardStart(sequence Wizard_Name) if width = -1 or height = -1 then setRect( WizardWindow, Default, Default, Default_width, Default_height, True ) else setRect( WizardWindow, Default, Default, width, height, True ) setRect( WizNext, width-5-buttonwidth, height-5-buttonheight, buttonwidth, buttonheight, True ) setRect( WizPrev, 5, height-5-buttonheight, buttonwidth, buttonheight, True ) end if setText(WizardWindow,Wizard_Name) setHandler( WizNext, w32HClick, routine_id("WizNext_Onclick")) setHandler( WizPrev, w32HClick, routine_id("WizPrev_Onclick")) setIcon(WizardWindow,"Wizard.ico") showWindow ( WizardWindow, SW_NORMAL ) if SFroutines[1] != -1 then call_proc(SFroutines[1],{}) end if if length(step_progression) > 0 then goto_step(step_progression[1]) end if WinMain(WizardWindow,Normal) end procedure WizardTest.exw -- The example Program include win32lib.ew include wizard.ew include msgbox.e atom foobar without warning --------------------------- Page 1 constant PersonsName = createEx( CText, "Please Enter Your Name Here", WizardWindow, 12, 8, 364, 24, 0, 0 ) procedure explain() foobar = message_box("This is a demo of the Wizard. The Source is quite simple."& " To see something a little more advanced, make your favourite colour blue.","Welcome",MB_OK) end procedure make_step("Name",{PersonsName},routine_id("explain")) ----------------------------- Page 2 constant PersonsColour = createEx( DropDownList , "", WizardWindow, 12, 8, 364, 24, 0, 0 ) addItem ( PersonsColour, {"Red","Blue","Green","Purple"} ) procedure Colour_onchange(integer self, integer event, sequence params) if equal(getText(PersonsColour),"Blue") then goto_step("Reason") end if end procedure setHandler(PersonsColour,w32HChange,routine_id("Colour_onchange")) procedure say_hello() foobar = message_box("Hello "&getText(PersonsName)&"!","Hello",MB_OK) end procedure make_step("Colour",{PersonsColour},routine_id("say_hello")) --------------------------------------- Page 3 constant PersonsAge = createEx( CText, "Please Enter Your Age Here", WizardWindow, 12, 8, 364, 24, 0, 0 ) make_step("Age",{PersonsAge},-1) -------------------------------------- -- Special Page you only get to see if you pick blue.... constant PersonReason = createEx( CText, "Please Enter Why you like blue so much.", WizardWindow, 12, 8, 364, 24, 0, 0 ) make_step("Reason",{PersonReason},-1) --------------------------------- procedure output() atom file file = open("output.txt","w") puts(file,getText(PersonsName)&"'s Favourite Colour is "&getText(PersonsColour)) if equal(getText(PersonsColour),"Blue") then puts(file," (because "&getText(PersonReason)&")") end if puts(file," They are "&getText(PersonsAge)&" years old") close(file) end procedure set_routines(-1,routine_id("output")) set_progression({"Name","Colour","Age"}) WizardStart("Example Wizard") WinMain(WizardWindow,Normal) Running Windows XP if it matters.
2. Re: Win32lib Error 495 getHandle Failed.
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Dec 21, 2003
- 389 views
On Sun, 21 Dec 2003 23:24:56 +1000, Urzumph <Urzumph at HotPOP.com> wrote: >new_items = steps[new_index][1] >setVisible(new_items,True) You're trying to setVisible("Name") rather than setVisible({PersonsName}) which is [2]. Regards, Pete http://palacebuilders.pwp.blueyonder.co.uk/euphoria.html