複数行の文字列を表示させたいときに、mesだと画面端まで来ると次が表示されません。
そこでスクロールバーのあるmesboxを使って表示させようとしました。
しかし、処理後に最終行をmesbox上で表示させたいのに、
カーソルは最初の行に止まったままで、スクロールさせないと最終行が見えません。
********************************************************************
最初はこんなのを書いてました。
********************************************************************
sdim a,1024 pos 0,320 mesbox a,640,150,1,0 repeat 100 b=cnt poke a,strlen(a),"\n"+str(b) objprm 0,a wait 1 loop
過去ログに同じ質問があったので、回答の参考サイトを見て手直ししようと思ったのですが挫折しました。
過去ログ http://hsp.tv/play/pforum.php?mode=pastwch&num=9260
参考サイト http://hspnext.com/hspkura/hspkura12.htm#contents47
********************************************************************
参考サイトを見てこのように直してみました。
********************************************************************
#define EM_SCROLL $000000B5 ;追加 #define SB_LINEDOWN 1 ;追加 sdim a,1024 pos 0,320 mesbox a,640,150,1,0 repeat 100 b=cnt c=cnt poke a,strlen(a),"\n"+str(b) objprm 0,a sendmsg objinfo(0,2), EM_SCROLL, SB_LINEDOWN, 0 ;追加 wait 1 loop
sendmsgのパラメーターである
objinfo(0,2)がmesboxを指していることは分かりました。
次のEM_SCROLLがメッセージID、SB_LINEDOWNがwParam値ということですが理解不能…。
付け足した初っ端の
#define EM_SCROLL $000000B5
#define SB_LINEDOWN 1
自体意味が分かりません。。。
#defineがマクロを指定していることは理解できるのですが…。
$000000B5 ??
SB_LINEDOWN 1 ?? SB_LINEDOWN = 1って意味??
「おまえにはまだ早い。」と言われればそれまでなのですが…
できればコメントいただきたい次第です。。。