HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0908
ぽっくる文字列の正確な長さを調べる方法は?7解決


ぽっくる

リンク

2016/9/8(Thu) 23:50:34|NO.76816

文字列を表示する際の正確な長さを調べる方法がわかりません。

全角半角混在の為、strlenでバイト数を調べてフォントサイズの半分をかけるなどやってみましたが、文字列によって余白ができたりします。

ウインドウズ標準の書体であれば、特に拘りはありません。
正確な長さを調べる為に設定すべき、書体やフォントスタイルなどがあればアドバイスお願い致します。



この記事に返信する


スペース

リンク

2016/9/9(Fri) 00:02:19|NO.76817

mesで表示した文字列の事なら、ginfo_mesxとginfo_mesyで取得できます。
「表示した場合の長さ」を知りたなら、bufferに一旦表示してginfo_mesxを使えばいいかと。



ぽっくる

リンク

2016/9/9(Fri) 00:02:37|NO.76818

ginfo(14)を使えば正確な長さがわかるようですが、一度mesかprintで表示する必要があるようです。

表示せずにginfo(14)と同じ結果にする方法をご存じの方がいらっしゃればお願い致します。



ぽっくる

リンク

2016/9/9(Fri) 00:04:18|NO.76819

>スペースさん

ご返答ありがとうございます。
やはり、一度表示するしかないのですかね。



ぽっくる

リンク

2016/9/9(Fri) 00:08:09|NO.76820

スペースさんのbufferに一度書いて調べる方法でいくことにしました。

スペースさん有難う御座いました。

m(_ _)m



掘木

リンク

2016/9/9(Fri) 21:26:08|NO.76827

GDI32にGetTextExtentPoint32なる関数が居てるらしいゾ。
https://msdn.microsoft.com/ja-jp/library/cc410400.aspx

整形したらこんな感じ?

#module #uselib "gdi32.dll" #func GetTextExtentPoint32 "GetTextExtentPoint32A" int,str,int,var #defcfunc GetStringWidth str string dim pt,2 GetTextExtentPoint32 hdc,string,strlen(string),pt return pt #global font "MS UIゴシック",24 mes GetStringWidth("HELLO WORLD !!") : mes "HELLO WORLD !!" font msgothic,12 mes GetStringWidth("HELLO WORLD !!") : mes "HELLO WORLD !!"
複数行に対応していないけどね。



GENKI

リンク

2016/9/9(Fri) 22:29:17|NO.76828

もう同じサンプル出てますが、関連資料です。どうぞ。

String/矩形 - HSP開発wiki
http://wiki.hsp.moe/String%EF%BC%8F%E7%9F%A9%E5%BD%A2.html



ぽっくる

リンク

2016/9/10(Sat) 02:36:23|NO.76829

あれれ?
解決チェックしてませんでしたね。

>掘木さん
>GENKIさん

ご返答ありがとうございました。
参考にさせて頂きます。



ONION software Copyright 1997-2023(c) All rights reserved.