;================================================================================ ;モジュール obj ;ver 1.0 ; Object(Window)関連 ; llmod.asが必要です ;================================================================================ ; objモジュールの命令一覧 ; ; objgray オブジェクトの使用可、不可設定 ; getobjsize オブジェクトのサイズ、位置取得 ; p_scrwnd スクリーン座標系をウィンドウ座標系に変換 ; p_wndscr ウィンドウ座標系をスクリーン座標系に変換 ; resizeobj オブジェクトのサイズ変更 ; ; 計 5個 ;使い方 ;================================================================================ ; objgray n1,n2 オブジェクトの使用可、不可設定 ; ; n1 : オブジェクトのID ; n2 : 使用可にするか不可するかのフラグ ;================================================================================ ; ;<>説明 ; buttonなどのオブジェクトを使用可にしたり、不可にしたりします。 ; n1にはbuttonやlistviewなどのIDを代入します。 ; n2を0にするとオブジェクトを使用できない状態にし、1にすると使用できる ; 状態にします。 ; n2を-1にするとそのオブジェクトが使用可か不可かを調べます。 ; ;<>この命令を呼び出した後のstatの値 ; 1 エラー無し ; 0,-1 エラー ;n2を-1にしたとき ; 1 使用可 ; 0 使用不可 ; ;================================================================================ ; getobjsize v1,n2 オブジェクトのサイズと位置取得 ; ; v1 : オブジェクトのサイズ、位置を取得するための数値変数 ; n2 : オブジェクトのID ;================================================================================ ; ;<>説明 ; オブジェクトのサイズと位置を取得します。 ; n2にはbuttonやlistviewなどのIDを代入します。 ; v1にはオブジェクトのサイズ、位置が以下のように代入されます。 ; v1.0 幅 ; v1.1 高さ ; v1.2 左上のx座標 ; v1.3 左上のy座標 ; v1.4 右下のx座標 ; v1.5 右下のy座標 ; 各座標はウィンドウ座標系です。 ; ;================================================================================ ; p_scrwnd v1 スクリーン座標系をウィンドウ座標系に変換 ; ; v1 : スクリーン座標系が入った数値変数 ;================================================================================ ; ;<>説明 ; スクリーン座標系をウィンドウ座標系に変換します。 ; v1にx座標、y座標を代入しておきます。 ; 描画対象となっているウィンドを基準にします。 ;例) ; ginfo ; x=prmx,prmy ; p_scrwnd x ;スクリーン座標系をウィンドウ座標系に変換 ; ;================================================================================ ; p_wndscr v1 ウィンドウ座標系をスクリーン座標系に変換 ; ; v1 : ウィンドウ座標系が入った数値変数 ;================================================================================ ; ;<>説明 ; ウィンドウ座標系をスクリーン座標系に変換します。 ; v1にx座標、y座標を代入しておきます。 ; 描画対象となっているウィンドを基準にします。 ;例) ; x=mousex,mousey ; p_wndscr x ;ウィンドウ座標(100,30)をスクリーン座標に変換 ; ;================================================================================ ; resizeobj n1,v2,n3 オブジェクトのサイズ変更 ; ; n1 : オブジェクトのID ; v2 : サイズ、位置が入った数値変数 ; n3 : 位置、サイズを変更しないかどうかのフラグ ;================================================================================ ; ;<>説明 ; オブジェクトn1のサイズを変更します。 ; v2には幅、高さ、x座標,y座表の順に代入しておきます。 ; n3を1にすると位置を変えずにサイズだけ変更します。 ; n3を2にするとサイズを変えずに位置だけ変更します。 ; ;例) ; button "width*2",wx2 ; button "height*2",hx2 ; input s,100,20 ; ipt_id=2 ; ;幅を40、高さを30にして(0,80)に移動する ; s=40,30,0,80 ; resizeobj ipt_id,s ; stop ;*wx2 ; ;幅を2倍にする ; getobjsize s,ipt_id ; s=s*2 ; resizeobj ipt_id,s ; stop ;*hx2 ; ;高さを2倍にする ; getobjsize s,ipt_id ; s.1=s.1*2 ; resizeobj ipt_id,s ; stop ; ;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #module "obj" ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;objgray ;オブジェクトの使用可、不可状態設定 ;................................................................................ #deffunc objgray int,int mref v1 ;obj ID or window handle mref v2,1 ;flag mref stt,64 _hspobjhandle v1 if stat : v1=stat prm=v1,v2 if v2<0 { dllproc "IsWindowEnabled",prm,1,D_USER }else{ dllproc "EnableWindow",prm,2,D_USER } return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;p_scrwnd ;スクリーン座標系をウィンドウ座標系に変換 ; ;p_wndscr ;ウィンドウ座標系をスクリーン座標系に変換 ;................................................................................ #deffunc p_scrwnd val p="ScreenToClient" : goto *@f #deffunc p_wndscr val p="ClientToScreen" *@ mref v4,16 ;point mref bmscr,67 mref stt,64 getptr prm.1,v4 prm=bmscr.13 dllproc p,prm,2,D_USER return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;p_wndscr ;ウィンドウ座標系をスクリーン座標系に変換 ;................................................................................ ; #deffunc p_wndscr val ; mref v4,16 ;point ; mref bmscr,67 ; mref stt,64 ; getptr p,v4 ; prm=bmscr.13,p ; dllproc "ClientToScreen",prm,2,D_USER ; return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;getobjsize ;オブジェクトのサイズ(rect)取得 ;................................................................................ #deffunc getobjsize val,int mref v1,16 mref v2,1 ;obj ID or window handle mref stt,64 ;typedef struct _RECT { // rc ; LONG left; ; LONG top; ; LONG right; ; LONG bottom; ;} RECT; _hspobjhandle v2 if stat : v2=stat getptr p,v1.2 ;rect prm=v2,p dllproc "GetWindowRect",prm,2,D_USER prm=stat v1=v1.4-v1.2 , v1.5-v1.3 p_scrwnd v1.2 p_scrwnd v1.4 stt=prm return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;resizeobj ;オブジェクトのサイズ変更 ;................................................................................ #deffunc resizeobj int,val,int mref v1 ;obj ID or window handle mref v2,17 ;width,height,x,y mref v3,2 ;flag whether to change the position of object _hspobjhandle v1 if stat : v1=stat a=v1, v2.2,v2.3, v2,v2.1, 1 ;handle, x,y, w,h if v3 { getobjsize m,a ;getobjsizeでm.0からw,h,x,yが代入される if stat=-1 : stt=-1 : return if v3=1 : a.1=m.2,m.3 ;位置を変更しない if v3=2 : a.3=m ,m.1 ;サイズを変更しない } dllproc "MoveWindow",a,6,D_USER return #global ;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>