;================================================================================ ;モジュール udbtn ;ver 1.0 ; アップダウンボタン ; llmod.asが必要です ;================================================================================ ; 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 アップダウンボタンの数値の表示の仕方を取得します。 ; ;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #module "udbtn" ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;sel_udbtn ; ;................................................................................ #deffunc sel_udbtn int mref v1 stt=handle_of_ud handle_of_ud=v1 return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;udset ;UpdownControlの設定 ;................................................................................ #deffunc udset int,int,int mref flag mref v1,1 mref v2,2 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 : stt=-1 :return } } 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 } prm=handle_of_ud,m,v1,v2 sendmsg prm ret=stat if flag=0 { _hspobjid ret if stat!-1 : ret=stat } stt=ret return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;udget ;UpdownControlの各情報取得 ;................................................................................ #deffunc udget int,int,int mref flag mref v1,1 mref v2,2 ; 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 prm=handle_of_ud,m,v1,v2 sendmsg prm ret=stat if flag=0 { _hspobjid ret if stat>=0 : ret=stat } stt=ret return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;udbtn ;UpdownControlの作成 ;................................................................................ #deffunc udbtn int,int,int,int mref v1 ;幅 mref v2,1 ;高さ mref v3,2 ;スタイル mref v4,3 ;相手 mref stt,64 ;sttはここでstat扱いにする 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=csrx,csry,v1,v2,v3,0,$200 _makewnd m,"msctls_updown32" handle_of_ud=m udset ,v4 stt=handle_of_ud return ;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #global