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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0806
nennneko5787Scintilla + mod_fontdlgでフォントの変更ができない3解決


nennneko5787

リンク

2023/8/6(Sun) 18:43:22|NO.99878


dim result, 8 fontdlg result,0x100 if stat == 0:return font refstr,result(2) fontname = refstr cnvstow fontnameu, fontname sendmsg hEdit,SCI_STYLESETFONT,32,fontname sendmsg hEdit,SCI_STYLESETSIZE,32,result(2)
フォントの変更ができません、、、



この記事に返信する


名無し

リンク

2023/8/7(Mon) 03:04:14|NO.99880

とりあえず原因から。
Scintilla側の設定でUTF8に対応させれてないにも拘らず、UTF8を使用しているから。

解説
cnvstow命令を使用してるので恐らくUTF8を使用しているのだろうな、と判断。
http://hsp.tv/play/pforum.php?mode=all&num=99863
上記スレッドで提示されているサンプルコードを使用していると判断し、
サンプルコード+No.99878のコードをcnvstowの一行のみコメントアウトして実行した所、
正常にフォントもサイズも変わったので、更にHSP3のutf8.asをインクルードして実行すると、
サイズは変わるが、フォントが固定されて変わらずだったので、UTF8が原因だと。

因みに、サンプルコードにUTF8.asをインクルードしてサンプルコードのを実行しても
sjisで表示できない文字は文字化けしたままだったのでUTF8になってないのは間違いなさげ。

更に余談ですが、「cnvstow」命令を使用しているのに変換した文字列を入れた変数
「fontnameu」をフォント指定に使用しておらず、変換前の方を使用しているので
cnvstow命令の意味がなくなってますね。
ま、修正して実行すればソフトが強制終了するのでむしろ悪化すると思いますが。

何れにしても、何らかの形で文字コード関連のオプションが必要なのだろうとは思うのですが、
軽く調べても特に分からなかったので有識者にパスします。



名無し

リンク

2023/8/7(Mon) 04:19:30|NO.99881

解決したのでご報告。分かった事箇条書きとサンプル
・utf16にフォント名を変更してもutf16は対応してないので意味がない
・utf8かasciiの何方かにする必要がある。
・utf8に変換してそのまま渡しても何か上手く行かない。
・メモリアドレスを渡してやれば上手く行く

・・・という事で、素でのHSP3では文字列をUTF8に変換する機能は無いので、
どこかしらかUTF8にするモジュール等を使用してフォント名をUTF8に変換して下さい。
複数見つかりはしたのですが、貼ると長くなりますのでここでは割愛します。


fontname = refstr cnvstow fontnameu, fontname sendmsg hEdit,SCI_STYLESETFONT,32,fontname
こちら上記3行を下記に置き換えれば上手く行くはずです。(1行目はそのまま)

fontname = refstr ;ここで「fontname」をUTF8に変換。 sendmsg hEdit,SCI_STYLESETFONT,32,varptr(fontname)
参考にしたページ↓
forums.purebasic.com/english/viewtopic.php?t=57270
www.thebackshed.com/forum/ViewTopic.php?TID=10776
wiki.hsp.moe/Module/文字コード変換モジュール.html
qiita.com/yamashiroakihito/items/06d8ffd95bba60f631fd



nennneko5787

リンク

2023/8/7(Mon) 14:05:18|NO.99882

解決しました!ありがとうございます!



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