font 命令は毎回 CreateFont とDeleteObject と SelectObject 関数を呼び出します。
もし作成したフォントハンドルを取得しておけるなら。SelectObject関数のみで十分に動作します。
#include "gdi32.as"
#module
// フォントを取得する
#defcfunc getfont str face_,int size_ , int style_
font face_,size_,style_
mref bm,67
// bmscr 内の hfont のメンバを返した場合、もう一度、font 命令を実行した際に、
// font 命令内で呼び出されている DeleteObject 命令によってオブジェクトの大元が削除され。
// 無意味な値に成ってしまう。
CreateFontIndirect varptr(bm.49/*bmscr 内のlogfont 構造体*/)
return stat
#deffunc select int obj_
SelectObject hdc,obj_
return
#global
// eof
hfont_msg_32_1 = getfont(MSGOTHIC,32,1)
hfont_msg_16 = getfont(MSGOTHIC,16)
select hfont_msg_32_1
mes "てすと"
select hfont_msg_16
mes "てすと"
redraw
// 作成したフォントは必ず削除
DeleteObject hfont_msg_32_1
DeleteObject hfont_msg_16