last time.

BlitzPlus Forums/BlitzPlus Programming/last time.

Nigel Brown(Posted 2003) [#1]
Guess this is the last time i will bother asking this as I have wasted a days programming already! I think there is an incconsistency between StringWidth() and GadgetWidth() do they even take parameters in pixels?

I want to create a label:

txt$ = "123"
CreateLabel( txt$, 0,0, StringWidth(txt$), FontHeight(), hnd )

the label width does not match the width of the string, ie: StringWidth(txt$) returns 32, the label at 32 pixels wide is greater than required for a string of "123". I will be creating various labels of differing widths and need to centre them relative to a panel gadget so i really, really need to set the label dimensions to match that of the string.


FlameDuck(Posted 2003) [#2]
How do you reckon that? In this code:
SetBuffer (DesktopBuffer())
win=CreateWindow("blah",0,0,300,300,0,33)
txt$ = "123" 
mylab=CreateLabel ( txt$, 0,0, StringWidth(txt$), FontHeight(), win ) 
DebugLog StringWidth(txt$)
DebugLog GadgetWidth (mylab)
Stop
StringWidth and GadgetWidth both return 24. Please explain the problem in greater detail.


Beaker(Posted 2003) [#3]
Nigel - I understand your problem because I have it as well. :)

The issue is this: StringWidth doesn't return the width of an API type string, but the width of a string using the current canvas font.

You might try loading a the same Windows font to an invisible canvas and checking the width of that.

Hope this helps.


Wiebo(Posted 2003) [#4]
Yeah, I had the same problem. You must load a font to be able to use Stringwidth()


Nigel Brown(Posted 2003) [#5]
Hey thanks for that, looked under the appearance setings and found that Tahoma was the font and its size was 8, doesn't quite match but it is close and I am sure I can get it to work from here thanks again.


JoshK(Posted 2003) [#6]
The problem is you don't know what your users have on their computer, so I guess you can call the API to find that out, at which point I stop caring much about how wide my gadgets are.