〜 オブジェクト 〜
一行・一頁上下にスクロール

mesbox命令で配置した複数行エディットボックスの内容がコントロールに収まり切らない時、
自動的に付加されるスクロールバーをマウス操作した時の動作を自動で実行させてみましょう。
自動実行はHSP2はobjsend命令、HSP3からはsendmsg命令でオブジェクトにメッセージを送信し、
今回はメッセージコードのうち「EM_SCROLL(=0x00B5)」というものを使用してください。

HSP2「objsend オブジェクトID, 0x00B5, スクロール情報, 不使用変数(=0), 0」 HSP3「sendmsg オブジェクトハンドル, 0x00B5, スクロール情報, 不使用(=0)

スクロール情報には「一行上(=0)」「一行下(=1)」「一頁上(=2)」「一頁下(=3)」のいずれかを指定します。 尚、一頁というのはスクロールバーの両端に付く上下ボタンと つまみとの間にあるスクロール可能余白をクリックした際に動くサイズ量のことです。

editscroll オブジェクトID, スクロール情報
オブジェクトIDスクロール対象オブジェクトID指定する。
スクロール情報EM_SCROLLメッセージ同様の「一行上(=0)」「一行下(=1)」「一頁上(=2)」「一頁下(=3)」のいずれかを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#module
#deffunc editscroll int, int
	mref id, 0 : mref size, 1
	objsend id, 0x00B5, size, nonuse
	return
#global

	sdim buf, 300
	buf  = "アメリカ   ブラジル\n"
	buf += "チャイナ   デンマーク\n"
	buf += "イングランド フランス\n"
	buf += "ジャーマニー ホンコン\n"
	buf += "アイス    ジャパン\n"
	buf += "神戸     ロンドン\n"
	buf += "メキシコ   ニューヨーク\n"
	buf += "大阪     北京\n"
	buf += "ケベック   ローム\n"
	buf += "上海     東京\n"
	buf += "ユニオン   ワシントン\n"
	buf += "エクスレイ  横浜\n"
	buf += "ゼブラ"
	nscroll = 2, 0, 1, 3
	font "MS 明朝", 20 : objmode 2 : objsize 50, 30
	pos 350, 10
	button "↑↑", *scroll
	button "↑", *scroll
	pos 350, 80
	button "↓", *scroll
	button "↓↓", *scroll
	pos 10, 10 : mesbox buf , 320, 130
	stop

*scroll
	editscroll 4, nscroll.stat
	stop

editscroll オブジェクトID, スクロール情報
オブジェクトIDスクロール対象オブジェクトID指定する。
スクロール情報EM_SCROLLメッセージ同様の「一行上(=0)」「一行下(=1)」「一頁上(=2)」「一頁下(=3)」のいずれかを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#module
#deffunc editscroll int id, int size
	sendmsg objinfo(id, 2), 0x00B5, size
	return
#global

	sdim buf, 300
	buf  = "アメリカ   ブラジル\n"
	buf += "チャイナ   デンマーク\n"
	buf += "イングランド フランス\n"
	buf += "ジャーマニー ホンコン\n"
	buf += "アイス    ジャパン\n"
	buf += "神戸     ロンドン\n"
	buf += "メキシコ   ニューヨーク\n"
	buf += "大阪     北京\n"
	buf += "ケベック   ローム\n"
	buf += "上海     東京\n"
	buf += "ユニオン   ワシントン\n"
	buf += "エクスレイ  横浜\n"
	buf += "ゼブラ"
	nscroll = 2, 0, 1, 3
	font msmincho, 20 : objmode 2 : objsize 50, 30
	pos 350, 10
	button gosub "↑↑", *scroll
	button gosub "↑", *scroll
	pos 350, 80
	button gosub "↓", *scroll
	button gosub "↓↓", *scroll
	pos 10, 10 : mesbox buf , 320, 130
	stop

*scroll
	editscroll 4, nscroll.stat
	return