	;================================================================================
	;モジュール udbtn
	;ver 2.1
	;	アップダウンボタン
	;	llmod3.hspが必要です
	;================================================================================

	; udbtnモジュール命令一覧
	;
	; udbtn				アップダウンボタンの作成
	; sel_udbtn			操作するアップダウンボタンの選択
	; udset				アップダウンボタンの設定
	; udget				アップダウンボタンの各種情報の取得
	;
	; 計	4個


	;使い方
	;================================================================================
	; udbtn n1,n2,n3,n4		アップダウンボタンの作成
	;
	;  n1 : 幅
	;  n2 : 高さ
	;  n3 : スタイル
	;  n4 : アップダウンボタンを付けるオブジェクトのID
	;================================================================================
	;
	;<>説明
	; アップダウンボタンを作成します。
	; アップダウンボタンとは矢印ボタンを持ったオブジェクトです。
	; input等の入力ボックスから数値を得たいときなどに使うと便利です。
	; (一応button等にも付けることはできます。)
	; n4にはbuttonなどのオブジェクトのIDを入れます。
	; 幅や高さを省略するとobjsizeで設定した幅、高さが使われます。
	;
	;<>この命令を呼び出した後のstatの値
	; アップダウンボタンのID
	;
	;<>udbtnのスタイル
	; n4は以下の値を組み合わせて持つことができます。
	;
	;n4の値	スタイル
	; 1	最小、最大値に達したときに折り返す
	; 4	オブジェクトの右側に付ける
	; 8	オブジェクトの左側に付ける
	; $20	方向キーで数値を変えられるようにする
	; $40	水平タイプ
	; $80	数字をカンマで区切らない
	;
	; スタイルを省略するとここで設定したデフォルトスタイルが使用されます。

	#define DEFAULT_UDBTN_STYLE	0

	;================================================================================
	; sel_udbtn n1		操作するアップダウンボタンの選択
	;
	;  n1 : アップダウンボタンのID
	;================================================================================
	;
	;<>説明
	; この命令使用後はn1で指定したアップダウンボタンに対して各操作を行います。
	; アップダウンボタン新規に作成すると、自動的にそのアップダウンボタンが
	; 各操作の対象になります。
	; 複数のアップダウンボタンを作成したときは、この命令で操作するアップダウン
	; ボックスを選択してください。
	;

	;================================================================================
	; udset n1,n2,n3		アップダウンボタンの設定
	;
	;  n1 : セットするタイプ
	;  n2 : n1によって変わる
	;  n3 : n1によって変わる
	;================================================================================
	;
	;<>説明
	; アップダウンボタンの設定をします。
	; 設定するものはn1の値によって異なります。
	;
	;n1の値
	; 0	アップダウンボタンの相手を設定します。
	;	n2にオブジェクトのIDを指定します。
	;
	; 1	アップダウンボタンの範囲を設定します。
	;	n2に最小値(0から$7FFFまで),n3に最大値(0から$7FFFまで)を指定します。
	;
	; 2	アップダウンボタンの位置を設定します。
	;	n2にアップダウンボタンの位置を指定します。
	;
	; 3	アップダウンボタンの数値を16進で表示します。
	;	n2を省略すると16進になり、0以外の値を入れると10進に戻ります。
	;
	; 4	アップダウンボタンの増加量を変化させる時間を設定します。
	;	n2に設定する数、n3に設定する時間、増加量が入った数値変数
	;	のポインタを指定します。
	;	(例)
	;		udbtn 100,100
	;		;最初は1ずつ、3秒後に10ずつ、6秒後に50ずつ増加させるようにする
	;		a=0,1,  3,10,  6,50
	;		getptr p,a
	;		udset 4,3,p		;設定する時間は3つ
	;
	;
	;<>この命令を呼び出した後のstatの値
	;n1の値		statの値
	; 0		セットする前の相手のID
	; 1		0
	; 2		セットする前の位置
	; 3		セットする前の表示タイプ
	; 4		セットが成功した場合は1、失敗した場合は0
	;

	;================================================================================
	; udget n1			アップダウンボタンの各種情報の取得
	;
	;  n1 : 取得するタイプ
	;================================================================================
	;
	;<>説明
	; アップダウンボタンの各種情報を取得します。
	; 取得するものはn1の値によって異なります。
	; 各情報はstatに代入されます。
	;
	;n1の値
	; 0	アップダウンボタンの相手を取得します。
	; 1	アップダウンボタンの範囲を取得します。
	;	statの値は ' 最小値 | (最大値<<16) ' の形式になっています。
	; 2	アップダウンボタンの位置を取得します。
	; 3	アップダウンボタンの数値の表示の仕方を取得します。
	;

#ifdef __hsp30__

	;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	#module "_udbtn"

	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;sel_udbtn
	;
	;................................................................................
	#deffunc sel_udbtn int v1
	stt = handle_of_ud
	handle_of_ud = v1
	return


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;udset
	;UpdownControlの設定
	;................................................................................
	#deffunc udset int flag,int v1,int v2

	_v1 = v1
	_v2 = v2
	if(flag == 0) {
		;親の設定
		;#define UDM_SETBUDDY	1129
		m = 1129 : _v2 = 0	;v1=objid
		_hspobjhandle v1
		if(stat) : _v1 = stat : else {
			_is_wnd _v1
			if(stat == 0) : return -1
		}
	}
	if(flag == 1) {
		;範囲のセット
		;#define UDM_SETRANGE	1125
		_v2 = (_v1 << 16) | _v2
		m = 1125 : _v1 = 0
	}
	if(flag == 2) {
		;位置のセット
		;#define UDM_SETPOS	1127
		m = 1127 : _v2 = _v1 : _v1 = 0
	}
	if(flag == 3) {
		;ベースのセット
		;#define UDM_SETBASE	1133
		m = 1133 : _v2 = 0
		if(_v1) : _v1 = 10 : else : _v1 = 16
	}
	if(flag == 4) {
		;一定の時間ボタンを押し続けたときに増加させる量のセット
		;#define UDM_SETACCEL	1131
		m = 1131
	}
	sendmsg objinfo(handle_of_ud,2),m,_v1,_v2
	ret = stat
	if(flag == 0) {
		_hspobjid ret
		if(stat != -1) : ret = stat
	}
	return ret

	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;udget
	;UpdownControlの各情報取得
	;................................................................................
	#deffunc udget int flag,int v1,int v2

;	if flag=0 {
;		;親の取得
;		;#define UDM_GETBUDDY	1130
;		m=1130
;	}
;	if flag=1 {
;		;範囲の取得
;		;#define UDM_GETRANGE	1126
;		m=1126
;	}
;	if flag=2 {
;		;位置のセット
;		;#define UDM_GETPOS	1128
;		m=1128 : v2=v1 : v1=0
;	}
;	if flag=3 {
;		;ベースの取得
;		;#define UDM_GETBASE	1134
;		m=1134
;	}
;	if flag=4 {
;		;一定の時間ボタンを押し続けたときに増加させる量の取得
;		;#define UDM_GETACCEL	1132
;		m=1132
;		;v1は取得する設定値の数
;		;v2は値を受ける変数のポインタ
;	}
	m = 1130,1126,1128,1134,1132
	m = m.flag
	if(flag == 2) : v2 = v1 : v1 = 0
	sendmsg objinfo(handle_of_ud,2),m,v1,v2
	ret = stat
	if(flag == 0) {
		_hspobjid ret
		if(stat >= 0) : ret = stat
	}
	return ret


	;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	;udbtn
	;UpdownControlの作成
	;................................................................................
	#deffunc udbtn int v1,int v2,int v3,int v4

	_v3 = v3
	if(_v3 == 0) : _v3 = DEFAULT_UDBTN_STYLE

	; x $10	作成するときアップダウンボタンの位置をオブジェクトの上に来るように
	;	するとアップダウンボタンの下にあるオブジェクトに自動的に付く

	;#define WS_CHILD	0x40000000
	;#define WS_VISIBLE	0x10000000
	; 2	数値を増減させる
	_v3 = _v3 | $50000002
	alloc m,64		;リセット
	m = ginfo@hsp(22),ginfo@hsp(23),v1,v2,_v3,0,$200
	_makewnd m,"msctls_updown32"
	handle_of_ud = m
	udset ,v4
	return handle_of_ud

	;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	#global

#endif /* __hsp30__ */