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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0815
MortAddFontMemResourceExを使ってプライベートフォントを作成するには?8解決


Mort

リンク

2009/8/15(Sat) 19:05:31|NO.27078

タイトルの通りです。

http://msdn.microsoft.com/ja-jp/library/cc428287.aspx
http://smdn.invisiblefulmoon.net/programming/tips/privatefont_from_resource/

こちらの記事を読んで、HSPでも同様のことがパックファイルに入れたフォントファイルからできるのではと思いました。
そこで試しに、

#include "gdi32.as"
exist FontFileName
size = strsize : sdim tmp, size
bload FontFileName, tmp, size
pfn = varptr(tmp)
AddFontMemResourceEx pfn, size, 0, 1
return

のようなプログラムを書いてみたのですが上手くいきません。
引数の指定が間違っているのでしょうか……どなたかお力を貸していただけると幸いです。



この記事に返信する


Kpan

リンク

2009/8/15(Sat) 20:49:42|NO.27083

実際にコードは組んでないので分からないですが、実行ファイルの
リソースから読み込まないとだめしょう。

HSP自体にリソースの概念はないので、Resource HackerでHSPランタイムに
フォントファイルを埋め込んで処理させる、あるいはPACKFILEから吐き出した
フォントファイルをAddFontResourceする、みたいな感じになるかと思います。

(AddFontMemResourceExは対応OSが2000以降とのことなので、必要なら処理を
振り分けんといかんですな)



Mort

リンク

2009/8/15(Sat) 21:19:49|NO.27084

メモリ上から指定して読み込めるわけではなく、リソースでないとダメなのでしょうか?



inovia

リンク

2009/8/15(Sat) 21:55:27|NO.27093

AddFontMemResourceEx の4番目の引数に誤りがあるのが原因でしょう。


#include "gdi32.as" FontFileName="U:\\CD_Backup\\Office12\\Fonts\\HGRSKP.TTF" exist FontFileName size = strsize : sdim tmp, size bload FontFileName, tmp, size pfn = varptr(tmp):pcFonts=0 AddFontMemResourceEx pfn, size, 0, varptr(pcFonts) fh=stat mes fh font "HG正楷書体-PRO", 64 mes "てすと〜" RemoveFontMemResourceEx fh



Mort

リンク

2009/8/15(Sat) 23:21:55|NO.27096

なるほど、ありがとうございます!



Kpan

リンク

2009/8/16(Sun) 10:39:11|NO.27103

おお、できますね。いいかげんな情報書いちゃってすみません。
処理を減らしたコード例を投下しときます。


#epack "(フォントファイル).ttf" #include "gdi32.as" // 対応OSチェック if varptr(AddFontMemResourceEx) { dialog "Win 2k以降じゃないとダメ" stop } notesel buf noteload "(フォントファイル).ttf" AddFontMemResourceEx varptr(buf), strsize, 0, varptr(pcFonts) hFont = stat font "(フォント名)", 60 mes "てすとー" RemoveFontMemResourceEx hFont



ANTARES

リンク

2009/8/16(Sun) 12:04:50|NO.27106

誤:if varptr(AddFontMemResourceEx) {
正:if varptr(AddFontMemResourceEx)==0 {

 こうやって使いたい関数が動くかどうかチェックできるんですね。
いいことを聞きました。
WinXPとWin98で動作確認しました。
Win95+IE5.5はなぜかhsed3.exeが起動しませんでした。

3.2は「デバイスは動作していません」とか言われ、
3.1は「……\hspcmp.dllがみつかりません」とか言われました。



Mort

リンク

2009/8/17(Mon) 22:58:23|NO.27137

>Kpan
関数の利用可能チェック方法、とても参考になります!


そして解決後に再質問するのも気が引けるのですが・・・

font命令では有効になっても、Easy3DのE3DCreateFont命令で使おうとすると(フォントは有効になるのですが)盛大に文字化けしてしまうようです。
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200701/07060023.txt
こちらの方法で同じフォントファイルを使えるようにした場合には文字化けしないのですが、どういった違いがあるのでしょうか……?



Mort

リンク

2009/8/18(Tue) 23:10:53|NO.27150

やはり別の質問になるので、スレッドを立て直そうと思います。失礼いたしました。
それからKpanさんへの敬称が抜けていたようです、大変失礼いたしましたorz



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