;================================================================================ ;モジュール trackbox ;ver 1.0 ; トラックボックス ; llmod.asが必要です ;================================================================================ ; 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に代入されます。 ; ;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #module "trackbox" ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;trackbox ;TrackBarの作成 ;................................................................................ #deffunc trackbox int,int,int mref v1 ;幅 mref v2,1 ;高さ mref v3,2 ;スタイル mref stt,64 ;sttはここでstat扱いにする if v3=0 : v3=DEFAULT_TRACKBOX_STYLE ;#define WS_CHILD 0x40000000 ;#define WS_VISIBLE 0x10000000 v3=v3|$50000000 alloc m,64 ;リセット m=csrx,csry,v1,v2,v3,0,$200 _makewnd m,"msctls_trackbar32" handle_of_track=m stt=handle_of_track return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;sel_trackbox ; ;................................................................................ #deffunc sel_trackbox int mref v1 stt=handle_of_track handle_of_track=v1 return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;trackpos ;TrackBarの位置に関する命令 ;................................................................................ #deffunc trackpos int,int,int mref v1 mref v2,1 mref v3,2 ;flag of redraw ;つまみの位置を取得 #define TBM_GETPOS 1024 ;つまみの位置をセット #define TBM_SETPOS 1029 if v2 : m=1024 : v3=0 : else m=1029 : v3=v3^1 prm=handle_of_track,m,v3,v1 sendmsg prm return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;trackrng ;TrackBarの範囲に関する命令 ;................................................................................ #deffunc trackrng mref v1 ;最小値 mref v2,1 ;最大値 mref v3,2 ;範囲取得フラグ if v3 { ;トラックバーの最小の位置を取得 ;#define TBM_GETRANGEMIN 1025 ;トラックバーの最大の位置を取得 ;#define TBM_GETRANGEMAX 1026 if v1 : m=1025 : else m=1026 prm=handle_of_track,m,0,0 sendmsg prm ret=stat }else{ ;m=1030 : v2= v1|(v2<<16) : v1=1 ;範囲の設定 #define TBM_SETRANGE 1030 ;#define TBM_SETRANGEMIN 1031 ;#define TBM_SETRANGEMAX 1032 prm=handle_of_track,1031,1,v1 sendmsg prm,ret prm=handle_of_track,1032,1,v2 sendmsg prm ret=0 } stt=ret return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;trackmrk ;TrackBarの目盛りに関する命令 ;................................................................................ #deffunc trackmrk int,int,int mref v1 mref v2,1 mref v3,2 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 } prm=handle_of_track,m,v1,v2 sendmsg prm return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;tracksel ;TrackBarの選択領域に関する命令 ;................................................................................ #deffunc tracksel int,int,int,int mref v1 mref v2,1 mref v3,2 ;選択領域をセット(スタイルが$20を持つとき) ;#define TBM_SETSEL 1034 は使わない 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 prm=handle_of_track,1035,a,v1 sendmsg prm prm=handle_of_track,1036,a,v2 sendmsg prm stt=0 return } } prm=handle_of_track,m,v1,v2 sendmsg prm return #undef TBM_SETSELSTART #undef TBM_SETSELEND ;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #global