stringwidth() pb / center label text

BlitzPlus Forums/BlitzPlus Programming/stringwidth() pb / center label text

hub(Posted 2003) [#1]
Hi !
Try the following code, i've an 'invalid blitz2d buffer Handle' error message. Could you explain why ?
Perhaps have you another idea to center the text into the label ?

Thanks !

Function Show_info_window(Message$)

	f = LoadFont ("arial",14)
	
	x = (GadgetWidth(Desktop())- 300) / 2
	y = (GadgetHeight(Desktop())- 50) / 2
	Win3 = CreateWindow("Hubitron",x,y,300,50,Desktop(),17)

	SetFont f
	
	w = StringWidth(Message$) ; <- ERROR : invalid blitz2d buffer Handle 

	Lbl = CreateLabel("",(300-w)/2,10,w,20,Win3,0)
	SetGadgetFont lbl, f

	SetGadgetText Lbl, Message$

End Function


Show_info_window("test")



Beaker(Posted 2003) [#2]
StringWidth() measures the width in pixels of the internal string image in B+ and B2D/3D. It isn't used for gadget text.

I'm sure there were some commands added to deal with this, but I can't find documentation for them now.


FlameDuck(Posted 2003) [#3]
You get the error because you don't have a Buffer to draw to. Inserting the following lines after your 'SetFont' statement should fix it:
	canvas = CreateCanvas ( 0,0,10,10,Desktop() )
	HideGadget canvas
	SetBuffer CanvasBuffer( canvas )
This is probably a bug tho' (at least as far as I can tell), so you might want to post it in the bugreport forum aswell.