My program shows the string, which is edited/deleted/rename/moved a.s.o in the statusbar (path + filename).
mov eax,len(offset stringname) returns the amount of characters.
Here 80 - string fits into statusbar.
C:\Users\michael\Documents\80_iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.txt
Here 80 too - String is too long for the statusbar.
C:\Users\michael\Documents\80_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.txt
Here 80 too - String fits.
D:\Arquivo\Win_Tricks10\Schwierige_PreinstalledApps\PSTools\80_Gert_und_Hans.txt
Here 90 - String fits.
C:\Users\michael\Documents\90_IiiiiiIiiiiiiIiiiiiiBCIiIIIiiiiAAAiiiiBBBBiiiiiiiiiiiii).doc
Is there a possibility to check if the string fits into a determined space - 630 px statusbar ?
If it doesn't fit I'll do something like:
D:\Arquivo\Win_Tricks10\Schwierige_Prei\....\"Filename to long for statusbar"
Check GetTextExtentPoint32
Thank you jj,
I check it out
I admit I'm a bit confused with GetTextExtentPoint32
I create the statustext.
I create a font, send a WM_SETFONT message to the statusbar
and send a WM_SETTEXT message to the statusbar.
Either the text fits or doesn't.
statusbar
sz SIZE<>
mov sz.cx,630
mov sz.cy,23
Now I invoke GetTextExtentPoint32,hdc(handle of statusbar),addr statustext,length of statustext,addr sz);
It returns not NULL that is ok.
And now ?
What does this tell me ?
The SIZE structure is filled in by GetTextExtentPoint32 with the string's length and height in logical units (pixels?).
You compare the returned values with your status bar size to see if it fits.
sinsi,
yes, makes sense.
Thanks.
How is the dobermann doing ?
>How is the dobermann doing
Leading a quiet life...she died in 1998 :biggrin:
Quote from: clamicun on August 20, 2019, 12:54:49 AMNow I invoke GetTextExtentPoint32,hdc(handle of statusbar),addr statustext,length of statustext,addr sz);
hdc(handle of statusbar) sounds a bit ambiguous. It's a DC.
jj,
"hdc(handle of statusbar) sounds a bit ambiguous. It's a DC."
https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-gettextextentpoint32a
Parameters GetTextExtentPoint32
hdc
A handle to the device context.
It works mainly, but not always.
A pointer to a SIZE structure that receives the dimensions of the string, in logical units.
Difference units pixels ?
https://docs.microsoft.com/en-us/windows/win32/learnwin32/dpi-and-device-independent-pixels
Quotefonts are measured in logical units. A 72-point font is defined to be one logical inch tall. Logical inches are then converted to pixels. For many years, Windows used the following conversion: One logical inch equals 96 pixels. Using this scaling factor, a 72-point font is rendered as 96 pixels tall. A 12-point font is 16 pixels tall.
12 points = 12/72 logical inch = 1/6 logical inch = 96/6 pixels = 16 pixels
This scaling factor is described as 96 dots per inch (DPI).
sinsi,
sorry about that.
Whenever one my dogs died I was a bit down for a while.
Hope you have a new friend.