;================================================================================ ;モジュール progbox ;ver 1.0 ; プログレスボックス ; llmod.asが必要です ;================================================================================ ; progboxモジュール命令一覧 ; ; progbox プログレスボックスの作成 ; sel_progbox 操作するプログレスボックスを選択 ; progrng プログレスボックスの範囲を設定 ; progset プログレスボックスの各設定 ; ; 計 4個 ;使い方 ;================================================================================ ; progbox n1,n2,n3 プログレスボックスの作成 ; ; n1 : 幅 ; n2 : 高さ ; n3 : スタイル ;================================================================================ ; ;<>説明 ; プログレスボックスを作成します。 ; プログレスボックスは、進捗状況を表示するのに便利です。 ; 幅や高さを省略するとobjsizeで設定した幅、高さが使われます。 ; ;<>この命令を呼び出した後のstatの値 ; プログレスボックスのID ; ;<>スタイル(comctl32.dllのバージョンが4.70以上でなければ無効です) ; n4の値 ; 1 進み方がスムーズになります。 ; 4 垂直に目盛りが進みます。 ; ;================================================================================ ; sel_progbox n1 操作するプログレスボックスを選択 ; ; n1 : プログレスボックスのID ;================================================================================ ; ;<>説明 ; この命令使用後はn1で指定したプログレスボックスに対して各操作を行います。 ; プログレスボックス新規に作成すると、自動的にそのプログレスボックスが ; 各操作の対象になります。 ; 複数のプログレスボックスを作成したときは、この命令で操作するプログレス ; ボックスを選択してください。 ; ;================================================================================ ; progrng n1,n2,n3 プログレスボックスの範囲を設定 ; ; n1 : 最小値 ; n2 : 最大値 ; n3 : 最大値の拡張フラグ ;================================================================================ ; ;<>説明 ; プログレスボックスの範囲の設定をします。 ; 設定できる値は、最小値が0以上、最大値は65535以下です。 ; n3に1を代入すると最大値が$ffffffffまでになります。ただしこの設定は ; comctl32.dllのバージョンが4.70以上でなければ無効です。 ; ;<>この命令を呼び出した後のstatの値 ; 以前セットしていた範囲 [ 最小値 | (最大値<<16)]の形式 (n3=0のときのみ) ; ;================================================================================ ; progset n1,n2 プログレスボックスの各設定 ; ; n1 : セットする値 ; n2 : セットするタイプ ;================================================================================ ; ;<>説明 ; プログレスボックスの各設定を行います。 ; セットするタイプは以下の通りです。 ; ;目的 n1の値 n2の値 progset実行後のstatの値 ; 進ませる 0 0 進ませる前の位置 ; 進ませる量のセット 進ませる量 0 以前セットした進ませる量 ; 位置をセット セットする位置 1 セットする前の位置 ; 特定の量を増加させる 増加させる量 2 増加させる前の位置 ; ;(以下のものはcomctl32.dllのバージョンが4.70以上でなければ無効です) ; ; 目盛りの色 色 3 セットする前の色 ; 目盛りの後ろの色 色 4 セットする前の色 ; (色は r|(g<<8)|(g<<16) の形式) ; (値が 0 になっている所は省略できる) ; statの値が'セットする前の色'となっている所は、セットする前の色がシステムの ; デフォルトの色だった場合 -16777216($ff000000)がstatに代入されます。また、色を ; セットするときに$ff000000を使うとシステムのデフォルトの色に設定できます。 ; ; ;<>例 ; progbox 300,20 ;幅300,高さ20のプログレスボックスを作る ; progrng 0,200 ;範囲は0から200 ; ;*lp ; progset ;目盛りを進ませる ; ; ; ; ; goto lp ; ;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #module "progbox" ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;progbox ;ProgressBarの作成 ;................................................................................ #deffunc progbox int,int,int mref v1 ;幅 mref v2,1 ;高さ mref v3,2 ;スタイル mref stt,64 ;sttはここでstat扱いにする ;#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_progress32" handle_of_prog=m stt=handle_of_prog return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;sel_progbox ; ;................................................................................ #deffunc sel_progbox int mref v1 stt=handle_of_prog handle_of_prog=v1 return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;progrng ;ProgressBarの範囲の設定 ;................................................................................ #deffunc progrng int,int,int mref v1 mref v2,1 mref v3,2 if v3 { ;#define PBM_SETRANGE32 (WM_USER+6) //WM_USER 1024 ;// lParam = high, wParam = low m=1030 }else{ ;範囲のセット ;#define PBM_SETRANGE 1025 v2=v1 | (v2<<16) m=1025 : v1=0 } prm=handle_of_prog,m,v1,v2 sendmsg prm return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;progset ;ProgressBarの設定 ;................................................................................ #deffunc progset int,int mref v1 mref v2,1 if v2 { m=0,1026,1027,1033,$2001 m=m.v2 if v2<3 : v2=0 : else v2=v1 : v1=0 ; if v2=1 { ; ;v2=1 ; ;位置をセット ; ;#define PBM_SETPOS 1026 ; m=1026:v2=0 ; } ; if v2=2 { ; ;v2=2 ; ;特定の量を増加させる ; ;#define PBM_DELTAPOS 1027 ; m=1027:v2=0 ; } ; if v2=3 { ; ;v2=3 ; ;#define PBM_SETBARCOLOR (WM_USER+9) ; m=1033 : v2=v1 : v1=0 ; } ; if v2=4 { ; ;v2=4 ; ;#define PBM_SETBKCOLOR CCM_SETBKCOLOR ; ;// lParam = bkColor ; ;#define CCM_FIRST 0x2000 ; ;// Common control shared messages ; ;#define CCM_SETBKCOLOR (CCM_FIRST + 1) ; ;// lParam is bkColor ; m=$2001 : v2=v1 : v1=0 ; } }else{ if v1 { ;進む量のセット ;#define PBM_SETSTEP 1028 m=1028:v2=0 }else { ;進ませる ;#define PBM_STEPIT 1029 m=1029:v1=0:v2=0 } } prm=handle_of_prog,m,v1,v2 sendmsg prm return ;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #global