1. Win32lib Error 495 getHandle Failed.

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.

new topic     » topic index » view message » categorize

2. Re: Win32lib Error 495 getHandle Failed.

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu