Aslan Valued Contributor


Joined: 31 May 2001 Posts: 589 Location: Memphis, TN USA
|
Posted: Sat Oct 17, 2009 11:48 pm Post subject: |
|
|
Here is some api code that is part of a DSU I wrote a while back.
| Code: | #DEFINE COMMAND,tScroll
#DEFINE FUNCTION,tScroll
:tScroll
#IMPORTANT: All values for Vertical scroll positioning are expressed in lines(normal is 16 pixels)
# and values for Horizontal scroll positioning are expressed in pixels.
%X = -1
LOADLIB user32.dll
#******************************FUNCTIONS***************************#
REM @tScroll(<table>,<param>,(option))
# <param> can be either H (horizontal) or V (vertical). <option> can be S (size), M (nMax)
If @equal(%2,H)@equal(%2,V)@equal(%2,S)
%h = @strdel(@winexists(~%1),1)
%6 = @BINARY(DWORD,28)@BINARY(DWORD,@sum($1,$2,$4,$10))@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
if @equal(%2,H)
%X = @lib(user32.dll,GetScrollInfo,INT:,DWORD:%h,INT:0,@addr("%6"))
If @unequal(@sum(@val(@substr(%6,13,16)),1),@val(@substr(%6,17,20)))
%X = @val(@substr(%6,25,28))
end
FREELIB user32.dll
elsif @equal(%2,V)
%X = @lib(user32.dll,GetScrollInfo,INT:,DWORD:%h,INT:1,@addr("%6"))
If @unequal(@sum(@val(@substr(%6,13,16)),1),@val(@substr(%6,17,20)))
%X = @val(@substr(%6,25,28))
end
FREELIB user32.dll
elsif @equal(%2,S)
%s = @regread(HCU,"Control Panel\Desktop\WindowMetrics",ScrollWidth)
%X = @div(%s,-15)
else
%X = Err!
end
%s = @regread(HCU,"Control Panel\Desktop\WindowMetrics",ScrollWidth)
if @equal(%3,M)
%X = %X|@val(@substr(%6,17,20))
end
if @equal(%3,S)
%X = %X|@div(%s,-15)
end
if @equal(%3,M)
%X = %X|@val(@substr(%6,17,20))
end
if @equal(%3,S)
%X = %X|@div(%s,-15)
end
exit %X
end
#*******************************COMMANDS***************************#
%h = @strdel(@winexists(~%2),1)
REM tScroll ENABLE,<table>,<param>
# <param> can be either "H" (horizontal) or "V" (vertical) or "BOTH".
if @equal(%1,ENABLE)
if @equal(%3,H)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:0,$0)
elsif @equal(%3,V)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:1,$0)
elsif elsif @equal(%3,BOTH)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:3,$0)
end
FREELIB user32.dll
exit
end
REM tScroll DISABLE,<table>,<param>
# <param> can be either "H" (horizontal) or "V" (vertical) or "BOTH".
if @equal(%1,DISABLE)
if @equal(%3,H)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:0,$3)
elsif @equal(%3,V)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:1,$3)
elsif @equal(%3,BOTH)
%X = @lib(user32.dll,EnableScrollBar,BOOL:,DWORD:%h,INT:3,$3)
end
FREELIB user32.dll
exit
end
REM tScroll SHOW,<table>,<param>
# <param> can be either "H" (horizontal) or "V" (vertical) or "BOTH".
if @equal(%1,SHOW)
if @equal(%3,H)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:0,1)
elsif @equal(%3,V)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:1,1)
elsif @equal(%3,BOTH)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:3,1)
end
FREELIB user32.dll
exit
end
REM tScroll HIDE,<table>,<param>
# <param> can be either "H" (horizontal) or "V" (vertical) or "BOTH".
if @equal(%1,HIDE)
if @equal(%3,H)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:0,0)
elsif @equal(%3,V)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:1,0)
elsif @equal(%3,BOTH)
%X = @lib(user32.dll,ShowScrollBar,BOOL:,DWORD:%h,INT:3,0)
end
FREELIB user32.dll
exit
end
REM tScroll SETPOS,<table>,<param>,<position>
# <param> can be either "H" (horizontal) or "V" (vertical).
if @equal(%1,SETPOS)
%6 = @BINARY(DWORD,28)@BINARY(DWORD,@sum($4))@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
if @equal(%3,H)
%X = @lib(user32.dll,SetScrollInfo,INT:,DWORD:%h,INT:0,%6)
%X = @Sendmsg(~%2,4116,%4,0)
elsif @equal(%3,V)
%X = @lib(user32.dll,SetScrollInfo,INT:,DWORD:%h,INT:1,%6)
%X = @Sendmsg(~%2,4116,0,@prod(%4,16))
end
FREELIB user32.dll
exit
end |
Last edited by Aslan on Mon Oct 26, 2009 1:56 am; edited 3 times in total |
|