//scrollbar 滚动条控件	
import win.ui.ctrl.metaProperty;//导入控件属性元表支持
namespace win.ui.ctrl;  

class scrollbar{
    ctor(parent,tParam){ 
    	if(tParam){ 
			
			if(!tParam.horz) 
				tParam.style |= 0x1/*_SBS_VERT*/   
				
			this._bar = 0x2/*_SB_CTL*/
		} 
    }
	@_metaProperty;
} 

namespace scrollbar{
	SetScrollPos= ::User32.api("SetScrollPos","bool(int hWnd,int bar,int pos,bool redraw)");
	GetScrollPos= User32.api("GetScrollPos","int(int hWnd,int bar)");
	SetScrollRange= User32.api("SetScrollRange","bool(int hWnd,int bar,int min,int max,bool redraw)");
	GetScrollRange= User32.api("GetScrollRange","bool(int hWnd,int bar,int& min,int& max)");
	ShowScrollBar= User32.api("ShowScrollBar","bool(int hWnd,int bar,bool show)");
	EnableScrollBar= User32.api("EnableScrollBar","bool(int hWnd,INT flags,INT arrows)");
	
	_metaProperty = ..win.ui.ctrl.metaProperty( 
		pos = {
			_get = function(){ 
				return  GetScrollPos(owner.hwnd,owner._bar)
			};
			_set = function( v ){
				redraw = v>=0;
				SetScrollPos(owner.hwnd,owner._bar,..math.abs(v),true); 
			};  
		};
		show = function(s=true){
			return ShowScrollBar(owner.hwnd,owner._bar,s);
		};
		enable = function(flag=0){
			return EnableScrollBar(owner.hwnd,owner._bar,flag);
		};
		setRange = function(min,max,r=true){
			return SetScrollRange(owner.hwnd,owner._bar,min,max,r);
		};
		getRange = function(min,max,r=true){
			var ok,min,max = GetScrollRange(owner.hwnd,owner._bar,0,0)
			if(ok)return min,max
		}; 
	)

}
 
/***intellisense() 
!scrollbar.cls = 设计时类名
!scrollbar.className = 运行时类名
!scrollbar.pos = 获取或设置滚动按钮的当前位置\n如果赋值为负数、可禁止窗口重绘
!scrollbar.setRange(1,100) = 设置滚动条范围
!scrollbar.getRange() = 返回两个数值\n表示滚动条范围 
!scrollbar.enable( _ESB___ ) = 激活一个或两个滚动条箭头或是使其失效
!scrollbar.hwnd = 控件句柄
!scrollbar.id = 控件ID 
!scrollbar._parentForm = 控件所在的父窗口(指win.form对象)\n!winform.
!scrollbar.getParent() = 返回父窗口\n!scrollbar.
!scrollbar.setParent(__/*控件对象*/) = 改变父窗口 
!scrollbar.hide = 控件是否隐藏
!scrollbar.disabled = 是否禁用
!scrollbar.left = 左侧坐标
!scrollbar.right = 右侧坐标
!scrollbar.top = 顶部坐标
!scrollbar.bottom = 底部坐标
!scrollbar.width = 宽度
!scrollbar.height = 高度
!scrollbar.redraw() = 刷新
!scrollbar.show(true__) = 显示控件
!scrollbar.getRect() = 控件区块位置(::RECT结构体)
!scrollbar.getRect(true) = 控件屏幕区块位置(::RECT结构体)  
!scrollbar.setRect(rc) = 设置控件区块位置(::RECT结构体)  
!scrollbar.setRect(rc,true) = 设置控件屏幕区块位置(::RECT结构体)
!scrollbar.getClientRect() =  控件客户区块位置(::RECT结构体)\n!rect.
!scrollbar.getFont() = 控件字体(::LOGFONT结构体)\n!logfont.
!scrollbar.setFont(__/*指定字体*/) = 指定LOGFONT字体对象,或逻辑字体句柄 
!scrollbar.setFont(混入字体属性) = @.setFont(point=10;name="宋体");
!scrollbar.clientRect =  获取控件客户区块位置(::RECT结构体)
!scrollbar.theme = 外观主题,例如\nwinform.button.theme = "Explorer"\nwinform.button.theme = false
!scrollbar.modifyStyle(.(remove,add) = 如果指定第三个参数，则使用此参数调用::SetWidnowPos 
!scrollbar.modifyStyleEx(.(remove,add) = 如果指定第三个参数，则使用此参数调用::SetWidnowPos
!scrollbar.capture = 是否捕获全局鼠标消息
!scrollbar.close() = 关闭控件窗口
!scrollbar.invalidate(__/*可选使用::RECT()对象指定客户区*/) = 使窗口绘图区无效
!scrollbar.invalidate(__/*可选使用::RECT()对象指定客户区*/,0) = 使窗口绘图区无效\n不刷新背景
!scrollbar.update() = 重绘invalidate函数指定的区块
!scrollbar.setFocus() = 设置焦点 
!scrollbar.setPos(.(x坐标,y坐标,宽,高,插入位置,参数) = 调整窗口位置或排序,所有参数可选\n同时指定x,y坐标则移动位置\n同时指定宽高则改变大小\n指定插入位置(句柄或_HWND前缀常量)则调整Z序
!scrollbar.getPos() = 返回相对坐标,宽,高\nx,y,cx,cy=win.getPos(hwnd)
?win.ui.ctrl.scrollbar  =!scrollbar.
win.ui.ctrl.scrollbar() = 滚动条控件\n!scrollbar.
end intellisense***/
 