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

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



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.99878への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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