;================================================================================ ;モジュール misc ;ver 1.00 ; その他 ; llmod.asが必要です ;================================================================================ ; btnimg ; tooltip ; strtoint ; ; 計 3個 ;------------------------------------------------------------------------------- #module ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;btnimg buttonID,windowID,x,y,width,height ; buttonID :イメージを貼りつけるボタンのID(0〜63) ; windowID :イメージが描画されているウィンドウのID(0〜7) ; x :イメージの位置 ; y :イメージの位置 ; width :イメージの幅 ; height :イメージの高さ ; ;<>説明 ; buttonにイメージを貼りつけます。 ; ;例 ; buffer 1 ; picload "mybmp.bmp" ;ウィンドウID 1 にビットマップを表示 ; bmp_w=winx:bmp_h=winy ; gsel 0 ; button "",*label : btn_id=0 ; ; ;ウィンドウID 1の(0,0)-(bmp_w,bmp_h)の範囲の画像をボタンに描画する ; btmimg btn_id,1,0,0,bmp_w,bmp_h ;................................................................................ #deffunc btnimg int,int,int,int,int,int mref v1 ;button ID mref v2,1 ;window ID mref v3,2 ;x mref v4,3 ;y mref v5,4 ;width mref v6,5 ;height mref bmscr,67 p=v2 p.1=bmscr.18 ;現在アクティブなウィンドウID gsel p mref g_bmscr,67 gsel p.1 if firstcall=0 : dim hbmp,6,64 : firstcall=1 p=bmscr.18 : if p>1 : p- if (hbmp.p.v1) : prm=hbmp.p.v1 : dllproc "DeleteObject",prm,1,D_GDI _hspobjhandle v1 a=stat if a=0 : return s="" getptr p,s prm=a,p,64 dllproc "GetClassNameA",prm,3,D_USER charupper s if s!"BUTTON" : return prm=g_bmscr.4,v5,v6 dllproc "CreateCompatibleBitmap",prm,3,D_GDI p=bmscr.18 : if p>1 : p- hbmp.p.v1=stat a.1=hbmp.p.v1 prm=g_bmscr.4 ;hdc dllproc "CreateCompatibleDC",prm,1,D_GDI hdc=stat prm=hdc,a.1 dllproc "SelectObject",prm,2,D_GDI #define SRCCOPY 0xCC0020 prm=hdc,0,0,v5,v6,g_bmscr.4,v3,v4,SRCCOPY dllproc "BitBlt",prm,9,D_GDI ;#define GWL_STYLE (-16) #define BS_BITMAP 128 #define BS_ICON 64 prm=a,-16,$50000000|BS_BITMAP setwndlong prm #define BM_SETIMAGE 247 #define IMAGE_BITMAP 0 #define IMAGE_ICON 1 prm=a,BM_SETIMAGE,IMAGE_BITMAP,a.1 sendmsg prm dllproc "DeleteDC",hdc,1,D_GDI return #global ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- #module ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;tooltip ObjectID,String,BkColor ; ObjectID : button,input,treeboxなどのID ; String : ツールチップ上に表示する文字列 ; BkColor : ツールチップの背景色 ; ;<>説明 ; オブジェクトにツールチップを付けます。 ; ツールチップとはマウスがbuttonなどのオブジェクト上で一定時間停止したときに ; 現れる小さなオブジェクトです。 ; ;例) ; button "test",label : btn_id=0 ; tooltip btn_id,"テストします" ; ;................................................................................ #deffunc tooltip int,str,int mref v1 mref v2,33 mref v3,2 ;back color (r|(g<<8)|(b<<16)) mref bmscr,67 #define TTS_ALWAYSTIP 1 #define TTS_NOPREFIX 2 #define CW_USEDEF 0x80000000 strlen a,v2 : if a>=64 : sdim s,a+1 s=v2 a=bmscr.18 ;bmscr.wid if handle_of_tt.a=0 { prm=TTS_NOPREFIX ;|TTS_ALWAYSTIP m=CW_USEDEF,CW_USEDEF,CW_USEDEF,CW_USEDEF,prm,0,0 _makewnd m,"tooltips_class32" handle_of_tt.a=m } h_tt=handle_of_tt.a #define TTF_IDISHWND 1 #define TTF_CENTERTIP 2 #define TTF_RTLREADING 4 #define TTF_SUBCLASS 16 _is_wnd v1 : if stat : a=v1 : else a=41+v1 : a=bmscr.a getptr p,s ti=40,TTF_IDISHWND|TTF_SUBCLASS ;|TTF_CENTERTIP ti.2=bmscr.13 ;hwnd ti.3=a ;uid ti.8=bmscr.14 ti.9=p ;ptext getptr p,ti #define TTM_ADDTOOLA 1028 prm=h_tt,TTM_ADDTOOLA,0,p sendmsg prm ;以下はIE 3.0以上でなければ無効 ;#define WM_USER 1024 ;#define TTM_SETMAXTIPWIDTH (WM_USER + 24) ;#define TTM_SETTIPBKCOLOR (WM_USER + 19) ;#define TTM_SETTIPTEXTCOLOR (WM_USER + 20) prm=h_tt,$400+24,0,$7fffffff : sendmsg prm if v3 : prm=h_tt,$400+19,v3,0 : sendmsg prm return #global ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- #module ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;strtoint String,Base ; String : 数値に変換する文字列 ; Base : 基数(2〜36) ; ;<>説明 ; 文字列を数値に変換します。 ; ;例) ; strtoint "111101",2 ;2進数とみなして変換 ; mes stat ; ; strtoint "0x1F" ;先頭が"0x"だと16進数とみなされる(Base省略時) ; mes stat ; ; strtoint "0376" ;先頭が"0"だと8進数とみなされる(Base省略時) ; mes stat ; ; strtoint "23413",7 ;7進数とみなして変換 ; mes stat ; ; strtoint "za",36 ;36進数とみなして変換 ; mes stat ;................................................................................ #deffunc strtoint str,int mref v1,32 mref v2,1 mref stt,64 s=v1 ll_libload@ dll,"msvcrt" : if dll=0 : ll_libload@ dll,"crtdll" if dll=0 : stt=0 : return getptr prm,s prm.1=0,v2 dllproc "strtol",prm,3,dll ll_libfree@ dll stt=dllret@ return #undef SRCCOPY #undef BS_BITMAP #undef BS_ICON #undef BM_SETIMAGE #undef IMAGE_BITMAP #undef IMAGE_ICON #undef TTS_ALWAYSTIP #undef TTS_NOPREFIX #undef CW_USEDEF #undef TTF_IDISHWND #undef TTF_CENTERTIP #undef TTF_RTLREADING #undef TTF_SUBCLASS #undef TTM_ADDTOOLA #global ;-------------------------------------------------------------------------------