【再】scrlbar

もっかい作りなおしました。相変わらず私の環境ではエラー出ますけど。。。

もっかい作りなおしました。相変わらず私の環境ではエラー出ますけど。。。

  • タグ:
  • タグはありません
#module "scrlbar"
//-----------------------
#uselib "user32"
#func GetWindowLongA "GetWindowLongA" int,int
#func SetWindowLongA "SetWindowLongA" int,int,int
#func ShowScrollBar "ShowScrollBar" int,int,int
#func SetScrollInfo "SetScrollInfo" int,int,var,int
#func SetScrollPos "SetScrollPos" int,int,int,int
#func SetWindowPos "SetWindowPos" int,int,int,int,int,int,int
//-----------------------
// 使
#deffunc ScrollBar
oncmd gosub *WMSIZE, 5
oncmd gosub *SCROLL, $114
oncmd gosub *SCROLL, $115
si= 28, 31, 0,0,0,0,0 // SCROLLINFO
wx.ginfo_sel= ginfo_sizex+ginfo_sx-ginfo_winx
wy.ginfo_sel= ginfo_sizey+ginfo_sy-ginfo_winy
; WS_VSCROLL|WS_HSCROLL|WS_SIZEBOX
GetWindowLongA hwnd,-16 : SetWindowLongA hwnd,-16,stat|$340000
SetWindowPos hWnd, 0, 0, 0, 0, 0, $37 ; screen 0, bgscr
return 1
*WMSIZE //
sel=ginfo_sel: gsel ginfo_intid
repeat 2
si.3= ginfo(26+cnt), ginfo(12+cnt), ginfo(8+cnt)
SetScrollInfo hWnd, cnt, si, 1
loop
groll ginfo_vx, ginfo_vy
mref bm,67 : bm.20=ginfo_winx, ginfo_winy
hHide= wx.ginfo_intid= ginfo_sizex ;gsel sel
vHide= wy.ginfo_intid= ginfo_sizey
wnd=hwnd : gsel sel ;
if hHide=1: ShowScrollBar wnd, 0, 0:else: SetWindowPos Wnd, 0,0,0,0,0,$37
if vHide=1: ShowScrollBar wnd, 1, 0:else: SetWindowPos Wnd, 0,0,0,0,0,$37
return 1
*SCROLL //
sel=ginfo_sel : gsel ginfo_intid
m=iparam=$115 : nPos=ginfo(8+(m=1))
Code= wParam &$ffff
repeat 1
if Code= 5 : nPos=wParam>>16&$ffff : break ;TB_THUMBTRACK
if Code= 0 : nPos-4 : break ;TB_LINEUP
if Code= 1 : nPos+4 : break
if Code= 2 : nPos-32: break
if Code= 3 : nPos+32
loop
SetScrollPos hWnd, m, nPos, 1
if m : groll ginfo_vx, nPos :else: groll nPos, ginfo_vy
gsel sel : return 1
#global
;-----------------------
#module "scrlbar_iframe"
#uselib "USER32.DLL"
#func SetParent "SetParent" int,int
#deffunc iframe_ int wid_, int wxsize, int wysize, int sxsize, int sysize
wid=wid_ : if wid=-1 : wid = ginfo_newid
hpwnd=hwnd
bgscr wid, wxsize, wysize, 2+4, ginfo_cx, ginfo_cy, sxsize, sysize
SetParent hwnd, hpwnd
gsel wid, 1
ScrollBar
return wid
#define global iframe(%1=-1, %2=640, %3=480, %4=640, %5=480) iframe_ %1,%2,%3,%4,%5
#global
//StyleAdd ,,(0)or(1) (+2 )
#uselib "user32.dll"
#func global SetLong "SetWindowLongA" int, int, int
#cfunc global GetLong "GetWindowLongA" int, int
#define global StyleAdd(%1, %2=0, %3=0)ujw=((%3)&2)*-2-16 :\
SetLong %1, ujw, GetLong(%1, ujw)|(%2)^((%3)&1)*(%2)
#define 2
#define 1
;-----------------------
onexit gosub *owari
screen 0
title "screen 0"
picload dir_exe+"\\sample\\hspdx\\HSPDX.BMP"
ScrollBar
width 400, 300
iframe , 640, 480, 100, 75
title "(^^)v"
picload dir_exe+"/sample/demo/JP6GIRL.BMP"
ScrollBar
; WS_MINIMIZEBOX, (1) (+0 )
StyleAdd hwnd, $20000, 1+0
gsel ginfo_sel, -1 : gsel ginfo_sel, 1
ScrollBar
stop
*owari
if iparam|wparam=0:end
wait 20:gsel wparam, -1:return
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX