	;================================================================================
	;モジュール trackbox
	;ver 2.1
	;	トラックボックス
	;	llmod3.hspが必要です
	;================================================================================

	; trackboxモジュール命令一覧
	;
	; trackbox			トラックボックスの作成
	; sel_trackbox			操作するトラックボックスを選択
	; trackpos			トラックボックスのつまみの位置の設定と取得
	; trackrng			トラックボックスの範囲の設定と取得
	; trackmrk			トラックボックスの目盛りの設定と取得
	; tracksel			トラックボックスの選択範囲の設定と取得
	;
	; 計	6個


	;使い方
	;================================================================================
	; trackbox n1,n2,n3		トラックボックスの作成
	;
	;  n1 : 幅
	;  n2 : 高さ
	;  n3 : スタイル
	;================================================================================
	;
	;<>説明
	; トラックボックスを作成します。
	; トラックボックスとはつまみを持ったオブジェクトです。
	; 決まった選択範囲の中から数値を得たいときなどに使うのに便利です。
	; 幅や高さを省略するとobjsizeで設定した幅、高さが使われます。
	;
	;<>この命令を呼び出した後のstatの値
	; トラックボックスのID
	;
	;<>trackboxのスタイル
	; n4は以下の値を組み合わせて持つことができます。例えば、
	;	n4=2|8|$100	;または n4=2+8+$100
	;	trackbox 200,70,n4
	; なら垂直で両側に目盛りが付き、ツールチップを持つスタイルになります。
	;
	;n4の値
	; 0	水平
	; 1	自動で目盛りを付ける
	; 2	垂直
	; 4	'水平'のとき	目盛りを上側に付ける
	;	'垂直'のとき	目盛りを左側に付ける
	; 8	目盛りを両側に付ける
	; $10	目盛りを付けない
	; $20	つまみの部分に選択領域を付ける
	; $40	$20 のスタイルのとき、つまみが動いても選択領域を固定したままにする
	; $80	つまみなし
	; $100	つまみがクリックされているときツールチップを付ける(このスタイルは
	;	comctl32.dllのバージョンによっては効果がない場合があります。)
	;
	;<>例	幅300,高さ50,ツールチップをもつtrackboxを作る
	;	trackbox 300,50,$100
	;
	; スタイルを省略するとここで設定したデフォルトスタイルが使用されます。

	#define DEFAULT_TRACKBOX_STYLE	0

	;================================================================================
	; sel_trackbox n1		操作するトラックボックスを選択
	;
	;  n1 : トラックボックスのID
	;================================================================================
	;
	;<>説明
	; この命令使用後はn1で指定したトラックボックスに対して各操作を行います。
	; トラックボックス新規に作成すると、自動的にそのトラックボックスが各操作の対象
	; になります。
	; 複数のトラックボックスを作成したときは、この命令で操作するトラックボックス
	; を選択してください。
	;

	;================================================================================
	; trackpos n1,n2		トラックボックスのつまみの位置の設定と取得
	;
	;  n1 : 設定する位置
	;  n2 : 位置を取得するフラグ
	;================================================================================
	;
	;<>説明
	; トラックボックスのつまみの位置を設定します。
	; n2を1にするとつまみの位置を取得します。
	;
	;<>この命令を呼び出した後のstatの値
	; n2を1にするとstatにつまみの位置が代入されます。
	; それ以外はstatは0になります。
	;

	;================================================================================
	; trackrng n1,n2,n3		トラックボックスの範囲の設定と取得
	;
	;  n1 : 最小値
	;  n2 : 最大値
	;  n3 : 範囲を取得するフラグ
	;================================================================================
	;
	;<>説明
	; トラックボックスの範囲を設定、取得します。
	; n3を1にすると設定範囲の値を取得します。
	;
	;<>この命令を呼び出した後のstatの値
	; n3を1にして、n1を1にするとtrackboxの最小位置、n2を1にすると
	; 最大位置がstatに代入されます。
	; それ以外はstatは0になります。
	;

	;================================================================================
	; trackmrk n1,n2		トラックボックスの目盛りの設定と取得
	;
	;  n1 : 目盛りをつける位置
	;  n2 : フラグ
	;================================================================================
	;
	;<>説明
	; トラックボックスの目盛りの位置を設定、取得します。
	;
	;n2の値		機能
	; 0		n1で指定した位置に目盛りを付けます。
	; 1		付けられている目盛りの数を取得します。
	; 2		間隔をn1で指定した値にして目盛り付けます。ただし、トラックボックス
	;		のスタイルを'自動で目盛りを付ける'(1)にしたときのみ有効です。
	; 3		n1番目の目盛りの位置を取得します。
	; 4		付けられている目盛りをすべてクリアします。
	;

	;================================================================================
	; tracksel n1,n2,n3		トラックボックスの選択範囲の設定と取得
	;
	;  n1 : 最小値
	;  n2 : 最大値
	;  n3 : フラグ
	;================================================================================
	;
	;<>説明
	; トラックボックスの選択範囲を設定、取得します。
	; ただし、トラックボックス作成時に'つまみの部分に選択領域を付ける'($20)という
	; スタイルを指定している場合に限ります。
	;
	; n3を0にするとn1-n2の範囲を選択します。
	; n3を1にすると開始位置(n1の値)のみをセットします。
	; n3を2にすると終了位置(n2の値)のみをセットします。
	; n3を3にすると選択範囲をクリアします。
	;
	;<>この命令を呼び出した後のstatの値
	; n1、n2をともに0すると選択開始位置がstatに代入されます。
	; n1、n2をともに1すると選択終了位置がstatに代入されます。
	;

#ifdef __hsp30__

	;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	#module "_trackbox"


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;trackbox
	;TrackBarの作成
	;................................................................................
	#deffunc trackbox int _v1,int _v2,int _v3

	v3 = _v3		;保存しとく

	if(v3 == 0) : v3 = DEFAULT_TRACKBOX_STYLE

	;#define WS_CHILD	0x40000000
	;#define WS_VISIBLE	0x10000000
	v3 = v3 | $50000000
	dim m,7		;リセット
	m = ginfo@hsp(22),ginfo@hsp(23),_v1,_v2,v3,0,$200
	_makewnd m,"msctls_trackbar32"
	handle_of_track = m
	return handle_of_track


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;sel_trackbox
	;
	;................................................................................
	#deffunc sel_trackbox int _v1
	stt = handle_of_track
	handle_of_track = _v1
	return stt


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;trackpos
	;TrackBarの位置に関する命令
	;................................................................................
	#deffunc trackpos int _v1,int _v2

	;つまみの位置を取得			#define TBM_GETPOS	1024
	;つまみの位置をセット			#define TBM_SETPOS	1029
	v1 = _v1
	if(_v2) : m = 1024 : v3 = 0 : else : m = 1029 : v3 = 1

	sendmsg objinfo(handle_of_track,2),m,v3,v1
	return


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;trackrng
	;TrackBarの範囲に関する命令
	;................................................................................
	#deffunc trackrng int _v1,int _v2,int _v3

	if(_v3) {
		;トラックバーの最小の位置を取得
		;#define TBM_GETRANGEMIN	1025
		;トラックバーの最大の位置を取得
		;#define TBM_GETRANGEMAX	1026

		if(_v1) : m = 1025 : else : m = 1026
		sendmsg objinfo(handle_of_track,2),m,0,0
		ret = stat
	} else {
		;m=1030 : v2= v1|(v2<<16) : v1=1
		;範囲の設定				#define TBM_SETRANGE	1030
		;#define TBM_SETRANGEMIN	1031
		;#define TBM_SETRANGEMAX	1032
		sendmsg objinfo(handle_of_track,2),1031,1,_v1
		sendmsg objinfo(handle_of_track,2),1032,1,_v2
		ret = 0
	}
	return ret

	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;trackmrk
	;TrackBarの目盛りに関する命令
	;................................................................................
	#deffunc trackmrk int _v1,int _v2,int _v3

	; 保存しとく(HSP3.0)
	v1 = _v1
	v2 = _v2

	if(v2) {
		;v2=1
		;目盛りの数を取得			#define TBM_GETNUMTICS	1040

		;v2=2
		;目盛りの間隔をセット			#define TBM_SETTICFREQ	1044
		;* スタイルを'自動で目盛りを付ける'したときのみ有効

		;v2=3
		;目盛りの位置を取得			#define TBM_GETTIC	1027

		;v2=4
		;目盛りをすべてクリア			#define TBM_CLEARTICS	1033

		m = 0,1040,1044,1027,1033
		m = m.v2
		if(v2 == 4) : v1 = _v3 ^ 1 : else : if(v2 == 2) : v2 = _v3
	} else {
		;目盛りをセット				#define TBM_SETTIC	1028
		m = 1028 : v2 = v1 : v1 = 0
	}
	sendmsg objinfo(handle_of_track,2),m,v1,v2
	return

	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;tracksel
	;TrackBarの選択領域に関する命令
	;................................................................................
	#deffunc tracksel int _v1,int _v2,int _v3
	;選択領域をセット(スタイルが$20を持つとき)
	;#define TBM_SETSEL	1034 は使わない

	; 保存しとく
	v1 = _v1
	v2 = _v2
	v3 = _v3

	if(v1 == v2) {
		;選択開始位置取得 v1=v2=0	#define TBM_GETSELSTART	1041
		;選択終了位置取得 v1=v2=1	#define TBM_GETSELEND	1042
		if(v1) : m = 1042 : else : m = 1041
		v1 = 0 : v2 = 0
	} else {
		a = (v3 >> 4) ^ 1		;Redraw flag	v3に$10を足すとRedrawしない
		v3 = v3 & $f
		if(v3) {
			;#define TBM_CLEARSEL		1043
			;#define TBM_SETSELSTART	1035
			;#define TBM_SETSELEND		1036
			m = 0,1035,1036,1043
			m = m.v3
			
			if(v3 == 3) : v2 = 0 : else : if(v3 == 1) : v2 = v1
			v1 = a
		}else{
			#define TBM_SETSELSTART	1035
			#define TBM_SETSELEND	1036
			sendmsg objinfo(handle_of_track,2),1035,a,v1
			sendmsg objinfo(handle_of_track,2),1036,a,v2
			return 0
		}
	}

	sendmsg objinfo(handle_of_track,2),m,v1,v2
	return

	#undef TBM_SETSELSTART
	#undef TBM_SETSELEND

	;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	#global

#endif /* __hsp30__ */