高级图像控件
高级图像控件
嵌入 COM 控件的容器对象
控件所在的父窗口(指win.form对象)
uiCtrlPlusObject.addCtrl(
button={ cls="button";text="button";left=33;top=32;right=126;bottom=81;autoResize=false }
)
uiCtrlPlusObject.adjust = function( cx,cy,wParam ) {
/*窗口缩放时会自动触发此函数。
cx 参数为窗口宽度,cy 参数为窗口高度,
wParam 参数请参考 _WM_SIZE 消息参数说明,一般不用管。
所有 win.form 创建的窗体和控件都支持此事件,
重复赋值只会追加而不会覆盖此事件。
一般不建议添加一个 wndproc 仅仅是为了处理 _WM_SIZE 消息,
定义 adjust 事件是更好的选择。
可主动调用此事件,省略参数时 cx,cy 参数默认设为窗口大小*/
};
文本水平对齐,
左对齐:"left"
居中:"center"
右对齐:"right"
图标文本请使用 iconStyle 属性的 align 字段指定水平对齐
是否允许自动播放 GIF 动画,
指定为 false 禁止自动播放
动画定时器ID
不可改动,可用于判断动画是否启动
此属性表示动画当前状态值,值null或false表示动画已停止
ARGB格式字体颜色,支持半透明
注意plus控件、GDI+都是ARGB格式数值表示颜色分量,即:0xAARRGGBB
与RGB的分量顺序是反过来的
是否允许跟随父窗体自动缩放
背景图像或背景色,
获取值是返回 gdip.bitmap 对象或 ARGB 格式颜色数值,
赋值时可指定图像路径、资源路径、gdip.bitmap 对象、颜色值,
颜色值使用0xAARRGGBB格式的数值。
赋值时指定一个路径或资源路径控件将自动缓存使用频繁的图像
内存图像建议使用setBackground函数指定缓存名
当前状态背景颜色,
修改背景色建议设置 background 属性为数值即可,
直接修改 backgroundColor 不会释放之前的背景图像且不会重绘
背景图expand模式下九宫格切图的底部切线
背景图expand模式下九宫格切图的左侧切线
背景图expand模式下九宫格切图的右侧切线
如果控件显示为水平滑块控件,此属性用于预留滑块按钮大小
背景图expand模式下九宫格切图的顶部切线
uiCtrlPlusObject.border = {color=0x805F9EA0;radius=11;width=2}/*使用一个表对象指定当前边框样式,
支持的字段请参考窗体设计器中设置边框样式生成的代码,
表的其他可用字段与 skin 函数指定的 border 样式相同,请参考范例。
修改此属性不会触发重绘。
可使用 predraw 或 redraw,redrawTransparent 等函数重绘*/
底部坐标
是否捕获全局鼠标消息
重新设置间隔时间或回调函数
该属性可用于切换选取状态
运行时类名
删除定时器。
参数如果为 null 则忽略不执行,
否则定时器ID必须是 setInterval 函数或setTimeout函数的返回值。
请注意如果定时器被删除,ID 可能被重新分配给其他定时器。
在定时器回调函数中返回 0,false 以删除定时器是更稳妥的方式
删除定时器。
参数如果为 null 则忽略不执行,
否则定时器ID必须是 setInterval 函数或setTimeout函 数的返回值。
请注意如果定时器被删除,ID 可能被重新分配给其他定时器。
在定时器回调函数中返回 0,false 以删除定时器是更稳妥的方式
关闭控件窗口
设计时类名
RGB格式字体颜色,
如果启用了编辑模式,可同步修改编辑框字体颜色,
注意使用argbColor修改颜色不能同步修改编辑框颜色
uiCtrlPlusObject.createEditBox(
vscroll = true;
hscroll = true;
multiline = true;
);/*创建并启用透明背景的richedit文本编辑框,可用参数与窗体设计器相同,
创建文本框时应用plus控件预设的字体、颜色、水平对齐方式,
并且使用plus控件预设的内边距限制文本编辑框显示范围。
可使用editBox属性访问此文本编辑框,
可通过设置plus控件的editable属性显示或隐藏文本编辑框*/
创建嵌入控件,返回控件容器对象,
容器对象的 _object 成员是创建的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象。
通常使用 util.metaProperty 为容器对象添加属性元表,
属性元表可拦截属性、函数调用并调用 _object 对象,
createEmbedEx 返回的容器已添加默认代理以直接访问 COM 对象
创建嵌入控件,返回控件容器对象,
容器对象的 _object 成员是创建的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象,
@clsId 指定控件 CLSID,
可选在参数@2中指定 COM 对象绑定的容器对象
此函数失败会抛出异常
嵌入 COM 控件,返回控件容器对象,
容器对象的 _object 成员是传入的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象,
@comObject 指定已创建成功的 COM 对象,
可选在参数@2中指定 COM 对象绑定的容器对象
此函数失败会抛出异常
创建嵌入控件,返回控件容器对象,
容器对象的 _object 成员是创建的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象。
此函数返回的容器已添加元表并创建代理以直接访问 COM 对象
创建嵌入控件,返回控件容器对象,
此函数返回的容器已添加元表并创建代理以直接访问 COM 对象,
@clsId 指定控件 CLSID,如果控件不是自内存加载,
则可省略 @clsId 并由 firstCoClassId函数自动获,
可选在参数@2中指定 COM 对象绑定的容器对象
此函数失败会抛出异常
允许直接在背景窗口上画图
并禁止控件在自己的窗口绘图
禁用默认绘图操作
是否禁用
uiCtrlPlusObject.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text=''}/*指定文本时,禁用此控件,并显示指定文本,
指定一个数组时,控件将创建动画逐帧显示数组里的文字图标,
如果控件配置了iconStyle属性,则使用iconText属性显示数组内的文字图标,
指定为null时,启用此控件,并恢复控件禁用之前的text、iconText属性*/
将 @x,@y 表示的像素值乘以窗体当前 DPI 缩放倍数并返回,
省略 @y 参数时仅返回 @x 转换后的值
窗口当前使用的DPI横坐标缩放系数,
该值由界面系统自动维护,任何情况下都不应手动修改,
这是一个以小数表示百分比的数,例如 1.25 表示 125%,
窗口未使用缩放或未完成缩放初始化时,值可能为 null,
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数
窗口当前使用的DPI纵坐标缩放系数,
该值由界面系统自动维护,任何情况下都不应手动修改,
这是一个以小数表示百分比的数,例如 1.25 表示 125%,
窗口未使用缩放或未完成缩放初始化时,值可能为 null,
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数
输出控件图像到hdc参数指定的GDI绘图设备,
x,y为输出坐标,如果绘图到父窗口,x,y参数可省略
输出控件图像到hdc参数指定的GDI+画板,
x,y为输出坐标,如果绘图到父窗口,x,y参数可省略
文本编辑框,此文本框也是一个win.ui.tracker对象,
允许共享内部编辑框的外观状态,不指定默认值为true,
如果希望利用文本边距、前景边距等模拟分离按钮
可将此值显示指定为false
是否允许编辑文本
如果此值设为true则切换到可编辑模式,
也可以指定要嵌入的编辑框的类名,例如"edit",
不指定类名则创建透明背景的richedit文本编辑框
在首次切换到可编辑模式下创建文本框,
并同步应用plus控件预设的字体、颜色、水平对齐方式,
并使用plus控件预设的内边距限制文本编辑框显示范围。
可使用editBox属性访问此文本编辑框,
如果文本编辑框已创建,再次修改editable仅显示或隐藏文本编辑框
禁用DPI自动缩放,
不指定参数启用DPI自动缩放,默认已启用
控件调整大小调整到适应当前显示字数
设为false时禁止在单击控件时设置此控件为焦点控件
控件字体(LOGFONT 结构体),
注意获取该属性总是返回新的 LOGFONT 对象,
修改返回字体并不会更新控件字体,
除非重新赋值。
建议尽量优先使用 getFont 或 setFont 函数,
以增强代码可读性
字体会根据控件设置自动处理 DPI 缩放,不需要事先缩放字体大小
指定自定义字符映射表,
键为字符,值为用于显示字符的gdip.bitmap对象
如果指定了此属性则忽略字体大小,使用textPadding以及内边距限制输出大小
前景图expand模式下九宫格切图的底部切线
前景图expand模式下九宫格切图的左侧切线
前景显示模式
支持模式expand,stretch,center,tile,scale
如果为null则foreLeft,foreRight为偏移坐标\expand模式foreTop,foreRight,foreBottom,foreLeft为九宫格切图坐标
其他模式为显示边距
前景图expand模式下九宫格切图的右侧切线
前景图expand模式下九宫格切图的顶部切线
如果控件显示为垂直滑块控件,此属性用于预留滑块按钮大小
前景图像或前景色,
获取值是返回 gdip.bitmap 对象或 ARGB 格式颜色数值,
赋值时可指定图像路径、资源路径、gdip.bitmap 对象、颜色值,
颜色值使用0xAARRGGBB格式的数值。
赋值时指定一个路径或资源路径控件将自动缓存使用频繁的图像
内存图像建议使用setForeground函数指定缓存名
如果边框圆角设为-1,前景图或前景色会裁剪为圆形后输出,
当前状态前景颜色,
修改背景色建议设置 foreground 属性为数值即可,
直接修改 foregroundColor 不会释放之前的前景图像且不会重绘
返回背景图像,返回值为gdip.bitmap对象
此函数不会返回背景色,仅返回背景图像,
如果不存在背景图像返回null
控件客户区块位置(::RECT结构体)
返回控件 LOGFONT 字体,
返回对象的 h 值会按控件的 DPI 缩放设置自动还原为缩放前大小。
返回控件 LOGFONT 字体,
返回对象的 h 值为字体实际大小,不会按控件 DPI 设置还原。
返回字体会设置 noScale 属性为 true,
使用控件的 setFont 函数或赋值 font 属性时,
noScale 属性为 true 的字体同样不会进行自动 DPI 缩放
返回gdip.font字体
注意字体生命期由控件管理
返回前景图像,返回值为gdip.bitmap对象
此函数不会返回前景色,仅返回前景图像,
如果不存在前景图像返回null
如果是窗体返回自身
如果是控件则返回_parentForm
标准库中所有控件都拥有此同名函数用于返回控件所在窗口,
窗口对象实现了同名函数用于返回窗口自身
返回父窗口
返回相对父窗口客户区的坐标,宽,高,
参数为true返回屏幕坐标,宽,高,
x,y,cx,cy=win.getPos(hwnd)
返回进度条最小值,最大值
控件区块位置(::RECT结构体)
控件屏幕区块位置(::RECT结构体)
获取顶层父窗口,这个函数会查找 orphanWindow 的父窗口
高度
当前控件窗口是否隐藏。
仅检查当前窗口的可见性样式(窗口 是否移除了 _WS_VISIBLE 样式)。
不考虑父窗口是否可见,不考虑是否被其他窗口遮挡。
如果需要同时判断父窗口的可见性,应改用 win.isVisible 函数。
uiCtrlPlusObject.hotkeyPrefix = _GdipHotkeyPrefixShow;
控件句柄
字体图标颜色,支持半透明,
支持使用skin函数动态切换此样式,
此颜色存储为ARGB格式,即:0xAARRGGBB,注意在创建控件的初始化参数中必须传入RGB格式颜色值,
请注意在未指定指属性时,图标字体默认与字体使用相同的颜色
图标字体,LOGFONT 结构体。
获取值时,如果存在 iconStyle.font,直接返回 iconStyle.font。
对 iconFont 赋值总是会创建新的 LOGFONT 结构并存为 iconStyle.font
使用 iconFont 赋值时可以传入仅指定 LOGFONT 部分成员的普通表。
修改返回字体的成员不会更新 plus 控件实际使用的 GDI+ 字体。
只有重新对 iconFont 赋值 ,才会在下次重绘时刷新 GDI+ 字体
图标字体会根据控件设置自动处理 DPI 缩放,不需要事先缩放字体大小
uiCtrlPlusObject.iconStyle = {
font=LOGFONT(h=-38;name='FontAwesome');
align="left";valign="top";padding={bottom=50}/*用于指定 iconText 显示样式
如 font 指向控件已使用的 iconStyle.font,则控件不会刷新字体。
font 如不是 ::LOGFONT 字体,控件将自动转换为 ::LOGFONT 字体。
对 iconFont 属性赋值以修改 iconStyle.font 则总是会刷新字体*/
}
指定文本图标
使用iconStyle指定字体与样式
uiCtrlPlusObject.iconTextRenderingHint = _GdipTextRenderingHint;
控件ID
可选使用一个gdip.imageAttributes对象对前景图像进行自动调色
如果需要在不同状态下调色,可以在onStateChange事件里动态设置调色矩阵
图像缩放时的默认插值模式,
默认值为_GdipInterpolationModeHighQualityBicubic
使窗口绘图区无效
使窗口绘图区无效
不刷新背景
uiCtrlPlusObject.isDialogMessage = function(hParent,msg){/*在控件范围内替代父窗口的 isDialogMessage,
可用于在控件范围内屏蔽对话框快捷键*/}
标准库中所有控件以及窗体对象都拥有此同名函数
窗体返回true,控件返回false
控件不设置背景、前景
但设置了显示文本,并启用事件回调则该值返回真
左侧坐标
数值,指定背景色线性渐变的角度,
渐变从背色颜色开始,到前景颜色结束
只有背景、前景都指定了当前状态下的颜色值才有效,
270,90为垂直方向的渐变
180,360为水平方向的渐变
此属性指定为负数启用圆形径向渐变,此时background为中心颜色,foreground为环绕颜色
返回文本输出后的区出大小,返回值为RECTF对象
可选在参数中指定要输出的文本,不指定则取当前显示文本,
将窗口转换为message-only window
该窗口不可见,仅用于消息分发
修改窗口样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS 前缀的常量
@add 用数值指定要添加的样式,可使用 WS 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码
修改窗口扩展样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS_EX 前缀的常量
@add 用数值指定要添加的样式,可使用 WS_EX 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码
是否启用事件回调
设为false将不能响应鼠标按键等交互事件
uiCtrlPlusObject.onAnimation = function(state,beginning,change,timestamp){
/*动画触发此函数,state 参数是上次返回的值
可以使用plus控件的animationState属性获取这里的返回值,
beginning,change为调用startAnimation指定的参数,
timestamp 参数为动画已执行的时间,
返回值为false或null停止动画*/
return state
}
uiCtrlPlusObject.onDrawBackground = function(graphics,rc,bkColor,foreColor){
/*自绘背景,
graphics 为gdip.graphics对象(GDI+画板),
rc为绘图区块,
bkColor为当前状态背景色,AGGB格式,可能为null
foreColor为当前状态前景色,ARGB格式,不会出现null值
返回真取消默认的背景绘图*/
}
uiCtrlPlusObject.onDrawContent = function(graphics,rc,txtColor,rcContent,foreColor){
/*自绘前景,
graphics 为gdip.graphics对象(GDI+画板),
txtColor 为文本色,ARGB 格式数值,
foreColor 为当前状态前景色,ARGB 格式数值,
rc为客户区RECT结构体,rcContent为去掉内边距后的RECT结构体,
返回真取消绘制文本、前景等默认操作*/
}
uiCtrlPlusObject.onDrawEnd = function(graphics,rc,bmpMem){
/*所有绘制操作结束触发此事件,
graphics 为gdip.graphics对象(GDI+画板),
rc 为客户区RECT结构体,
bmpMem 为当前正在绘制的 gdip.bitmap 对象,
要注意此函数退出后不可继续使用 bmpMem,
可使用 bmpMem.clone,bmpMem.copy,bmpMem.getThumbnail 等复制图像*/
}
uiCtrlPlusObject.onDrawForegroundEnd = function(graphics,rc,rcContent){
/*背景前景绘制后,绘制文本前触发此事件,
graphics 为gdip.graphics对象(GDI+画板),
rc为客户区RECT结构体,rcContent为去掉内边距后的RECT结构体*/
}
uiCtrlPlusObject.onDrawString = function(graphics,text,font,rectf,strformat,brush){
/*自定义输出文本,请不要删除传入参数中的GDI+对象*/
graphics.drawString(text,font,rectf,strformat,brush);
}
uiCtrlPlusObject.onDropFiles = function(files){
/*接受系统拖放,files是拖放的所有文件路径名数组,嵌入编辑框必须是edit控件,richedit*/
}
uiCtrlPlusObject.onFocusGot = function(hLostFocus){
..win.setFocus(hLostFocus);/*得到焦点触发此事件,hLostFocus为失去焦点的窗口句柄,
如果在这里将hLostFocus恢复焦点,则阻止当前窗口得到焦点*/
}
uiCtrlPlusObject.onFocusLost = function(hFocus){
/*失去焦点触发此事件,hFocus为得到焦点的窗口句柄*/
}
uiCtrlPlusObject.onKeyDown = function(keyCode,lParam,repeat){
/*按下键盘键*/
}
uiCtrlPlusObject.onKeyUp = function(keyCode,lParam){
/*放开键盘键*/
}
uiCtrlPlusObject.onMouseActivate = function(hwndTop,hitTest,message){
return _MA_/*鼠标点击并且将要激活窗口时触发此事件
hwndTop表示被激活的顶层窗口,
hitTest参数请参考WM_NCHITTEST消息
message为鼠标消息ID
返回值的作用请参数MSDN*/
}
uiCtrlPlusObject.onMouseClick = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标左键在控件上单击,
orphanWindow模式下如果阻止控件得到焦点,此事件不会被触发*/
}
uiCtrlPlusObject.onMouseDoubleClick = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标左键双击*/
}
uiCtrlPlusObject.onMouseDown = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标左键按下,
orphanWindow模式下如果阻止控件得到焦点,此事件不会被触发*/
}
uiCtrlPlusObject.onMouseDrag = function(wParam,lParam){
/*鼠标左键按下拖动,
自动捕获鼠标,允许拖出控件范围*/
}
uiCtrlPlusObject.onMouseDrag = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标左键按下拖动,
自动捕获鼠标,允许拖出控件范围*/
}
uiCtrlPlusObject.onMouseEnter = function(wParam,lParam){
/*鼠标移入*/
}
uiCtrlPlusObject.onMouseHWheel = function(flags,delta,lParam){
delta = -delta/(120/3);
/*水平滚动鼠标滚轮,flags 参数以 _MK_CONTROL 等常量表示按键*/
}
uiCtrlPlusObject.onMouseHover = function(wParam,lParam){
/*鼠标悬停*/
}
uiCtrlPlusObject.onMouseLeave = function(wParam,lParam){
/*鼠标移出*/
}
uiCtrlPlusObject.onMouseMove = function(wParam,lParam){
if( wParam & 0x1/*_MK_LBUTTON*/ ){
var x,y = win.getMessagePos(lParam);
/*鼠标移动*/
}
}
uiCtrlPlusObject.onMouseUp = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标左键弹起*/
}
uiCtrlPlusObject.onMouseWheel = function(flags,delta,lParam){
delta = delta/(120/3);
/*滚动鼠标滚轮,flags 参数以 _MK_CONTROL 等常量表示按键*/
}
uiCtrlPlusObject.onPosChanged = function( pos,triggeredByUser ){
/*进度值变更,pos 参数为当前进度数值,
如果此事件由用户拖动滑块或按键盘方向键触发,则 triggeredByUser 参数为 true*/
}
uiCtrlPlusObject.onRightMouseDown = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标右键按下*/
}
uiCtrlPlusObject.onRightMouseUp = function(wParam,lParam){
var x,y = win.getMessagePos(lParam);
/*鼠标右键弹起*/
}
uiCtrlPlusObject.onSelectChange = function(prev){
/*单选模式下已选中当前控件,prev 为同一分组之前选中的控件
同一分组之前没有选中控件时 prev 为 null*/
}
uiCtrlPlusObject.onStateChange = function(state){
/*状态已改变*/
}
uiCtrlPlusObject.onSysKeyDown = function(keyCode,lParam,repeat){
if(keyCode!=0x12/*_VK_ALT*/){
/*按下键盘ALT组合键*/
}
}
uiCtrlPlusObject.onSysKeyUp = function(keyCode,lParam){
/*放开键盘键*/
}
uiCtrlPlusObject.oncommand = function( id,event ){
/*控件被单击*/
}
uiCtrlPlusObject.onnotify = function(id,code,ptr){
/*处理通知消息,
plus 控件默认不发送通知消息,
但如果绑定 tooltip 控件这些会触发这个事件*/
}
如果当前是子窗口,
移除窗口的WS_CHILD样式,使窗口孤立出来悬浮于原位置,
悬浮窗口如影随形的跟随父窗口移动或改变大小,控件原来的固定边距等参数仍然有效
创建悬浮窗口,
悬浮窗口仍然显示在原来的位置,
可选参数 @transparent 如果为 true 则转换为分层透明窗口,
可选利用 @buddy 参数将只有句柄的窗口托管在悬浮窗口之上实现相同的效果,
伙伴窗口总是会保持在悬浮窗口前面,并保持相同的大小、位置
前景下边距
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距
滑块模式下,此属性将同时作用于背景色,作不会作用于背景图像
前景左边距
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距
滑块模式下,此属性将同时作用于背景色,作不会作用于背景图像
前景右边距
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距
滑块模式下,此属性将同时作用于背景色,作不会作用于背景图像
前景上边距
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距
滑块模式下,此属性将同时作用于背景色,作不会作用于背景图像
指定隐藏密码的占位字符,
例如指定为"*"隐藏密码,指定为null正常显示文本
如果调用了setCueBannerText,passwordChar不会影响提示文本
投递窗口消息到消息队列中
此函数用法请参考 ::User32.PostMessage
uiCtrlPlusObject.preadjust = function( cx,cy,wParam ) {
/*窗口缩放后重绘前、触发 adjust 事件之前触发此事件。
所有 win.form 创建的窗体和控件都支持此事件,
与 adjust 事件不同,对 preadjust 重复赋值则覆盖而不是追加事件。
cx 参数为窗口宽度,cy 参数为窗口高度,
wParam 为 _WM_SIZE 消息参数。*/
};
刷新位图缓存并准备下次重绘
进度条当前百分比。
如果用户正在控件上按下鼠标(例如拖动滑块),设置此属性会被忽略
获取或设置进度条当前值。
如果用户正在控件上按下鼠标(例如拖动滑块),设置此属性会被忽略
在窗口所在界面线程发布消息,
运行界面线程所有所有调用subscribe函数订阅此消息的函数,
可添加任意个触发参数
单选模式下选中控件
用于指定单选按钮分组名称
也可以在skin函数的group属性中指定该值
单选模式下选中控件的文本
刷新重绘
不重绘背景,速度较快
刷新重绘
如果控件添加了透明样式 _WS_EX_TRANSPARENT 则重绘窗口背景
uiCtrlPlusObject.reduce(
{/*@array 参数指定要循环处理每个元素的数组或表。
@array 指定为 false 则取消之前创建的防抖单例循环。
@callback 指定回调函数。
回调函数中可返回本次间隔延时,以毫秒为单位。
返回 0、null、false、以及不能转换为非 0 数的值中断处理。
回调参数为下一个元素的值和索引,处理到数组尾部时回调参数为 null,
如果此时仍然返回可转换为非 0 数的值,将转到第一个数组元素重复循环
@callback 指定回调函数。
@debounce 指定是否创建为防抖单例循环,默认为 true。*/},
function(value,index){
if(value){
return 50
}
}
)
按设计时位置参数、重新调整控件位置以适应窗口当前缩放比例。
父窗口缩放时会自动执行此操作。
默认在启动窗口消息循环时会自适应调整所有控件。
所以在启动消息循环前添加控件不必调用此函数。
背景显示模式
支持模式expand,stretch,center,tile,scale\expand模式foreTop,foreRight,foreBottom,foreLeft为九宫格切图坐标
其他模式为显示边距
如果指定了参数则调整窗口大小,
无论是否实际调整窗口大小,发送 _WM_SIZE 消息给窗口
右侧坐标
根据控件当前位置、缩放比例,更新控件的设计时位置参数。
以避免下次窗口缩放自适应调整控件当前位置更改被清除,
控件所有调整位置的属性或成员函数已自动调用此函数。
发送窗口消息
此函数用法请参考 ::User32.SendMessage
修改背景图像
加载背景图像并禁用缓存
该函数设置成功返回原来的背景图(gdip.bitmap 对象)
参数@1也可以使用0xAARRGGBB格式的数值指定一个颜色值,
缓存名为可选参数,默认以路径为缓存名,设为false禁止缓存,
如果参数@1是图像数据则可以使用参数@2指定缓存名
刷新重绘参数@3默认为true
该函数设置成功返回原来的背景图(gdip.bitmap 对象)
并且指定嵌入编辑框为空时的显示的默认提示文本
嵌入richedit时调用此函数会阻止拖放文件消息,
嵌入编辑框改为edit即可
打开编辑模式,
并且指定文本为空时的显示的默认提示文本
注意指定提示文本以后,
不应再直接访问editBox的text,passwordChar属性,
请改为读写plus控件的text,passwordChar属性
设置焦点
可选在参数中指定新的控件文本
如果启用了编辑模式,此函数将光标移动文本尾部
指定 LOGFONT 字体对象,或逻辑字体句柄
如果不指定 point 值并指定 h 值,字体会按控件的 DPI 缩放设置自动缩放。
uiCtrlPlusObject.setFont(h=-12;name="Tahoma");
设置gdip.font字体
字体由控件接管并负责释放
修改前景显示模式
支持模式expand,stretch,center,tile,scale
修改前景图像
修改前景图像
参数@1也可以使用0xAARRGGBB格式的数值指定一个颜色值,
缓存名为可选参数,默认以路径为缓存名,设为false禁止缓存,
如果参数@1是图像数据则可以使用参数@2指定缓存名
刷新重绘参数@3默认为true
该函数设置成功返回原来的前景图图(gdip.bitmap 对象)
加载前景图像并禁用缓存
该函数设置成功返回原来的背景图(gdip.bitmap 对象)
修改foregroundColor的值
注意plus控件、GDI+都是ARGB格式数值表示颜色分量,即:0xAARRGGBB
与RGB的分量顺序是反过来的
uiCtrlPlusObject.setInterval(回调函数,延时毫秒数,...setInterval(
function(){
/*参数@1指定执行函数,参数@2指定执行间隔,
可选指定一个或多个回调参数,不指定回调参数则默认为:
hwnd,message,timerId,tick,
如果在定时器中执行了win.delay等继续消息循环的代码,
在定时器退出前不会再触发同一定时器(重入)。
定时器回调函数返回数值可修改时间间隔,
返回false取消该定时器*/
},1000
)
改变父窗口
设置扇形进度条范围,
切换为扇形进度条模式
在此模式下前景图或前景色被裁剪为扇形,
如果有背景色则被裁剪为圆角,背景图不裁剪,
如果指定背景图、前景图,应设为center显示模式以使圆心对齐
调整窗口位置或排序,所有参数可选
同时指定x,y坐标则移动位置
同时指定宽高则改变大小
指定插入位置(句柄或_HWND前缀常量)则调整Z序
设置进度条范围,并切换到进度条显示模式。
如果宽大于高显示为水平进度条,高大于宽则显示为垂直进度条。
调用了此函数将会强制使用expand显示模式
水平进度条文本右对齐,垂直进度条文本上对齐时将限制文本输出于前景内部
否则不改变文本输出位置
可选用textPadding属性指定文本内边距
设置进度条范围
调用了此函数将会强制使用expand显示模式
设置控件区块位置(::RECT结构体)
设置控件屏幕区块位置(::RECT结构体)
禁止重绘
恢复重绘
修改背景显示模式
支持模式expand,stretch,center,tile,scale
推迟执行指定的函数或代码
此函数异步执行参数中指定的函数,不会阻塞当前代码继续执行,
延时参数是可选参数,以毫秒为单位,默认为0毫秒
可选用附加参数指定调用延时函数的实参
返回值为定时器ID
设置滑块范围,并切换到滑块显示模式。
如果宽大于高显示为水平滑块,高大于宽则显示为垂直滑块。
用户拖动滑块时触发 onPosChanged 事件,可用于获取当前位置
如果使用图像制作滑块控件,
请将背景、前景图像设为九宫格拉伸的expand模式,
使用前景切图在右侧或顶部预留滑块位置不拉伸,
如果未指定前景图像,aardio将自动使用当前字体颜色绘制滑块按钮,
同样通过前景切图预留滑块大小,边框圆角属性将作用于滑块按钮,
前景色将用于绘制滑块左侧或底部,背景色将用于绘制滑块右侧或顶部,
前景边距将同时限制背景前景色的大小,但不会作用于背景图像
显示控件
uiCtrlPlusObject.skin({
foreground = {
hover = "/res/images/button-hover.png";
focus = "/res/images/button-focus.png";
active = "/res/images/button-active.png";
disabled = 0xFFCCCCCC;
};
color = {
hover = 0xF00000FF;/*用格式为0xAARRGGBB的16进制数值,指定鼠标放到控件上的字体颜色,
AA为透明度,RR为红色分量,GG为绿色分量,BB为蓝色分量*/
};
border = {
hover = {left=5;color=0xFFFF0000;padding=15;}
};
})
绘图画布默认抗锯齿模式,
默认值为_GdipSmoothingModeAntiAlias
启动动画定时器,
可以在控件的onAnimation动画事件函数中修改外观,
或者在控件的onDrawContent等绘图事件函数中直接输出动画
启动动画定时器,
interval参数指定动画时间间隔,以毫秒为单位,
@beginning 指定初始状态值,@change 指定动画完成后的状态值,
可选参数 @beginning,@change 会传给 onAnimation 回调函数作为调用参数
启动进度条动画,并显示进度条,
可选用参数@1指定间隔毫秒,可选用参数@2指定每次推进的进度
必须调用setProgressRange函数事先指定进度范围
必须指定前景色、或前景图
增加进度条的值
步进单位可以省略,默认为1
参数@2可省略,默认为true
进度条到尾部或头部则返回false,否则返回true
停止动画定时器
停止进度条动画,并隐藏进度条
uiCtrlPlusObject.stringFormatFlags = _GdipStringFormatFlagsMeasureTrailingSpaces;
获取下一个支持tab控制焦点的控件
参数@1为true会自动移动焦点到该控件
参数@2为true则获取上一个控件,否则获取下一个控件
控件文本
uiCtrlPlusObject.textPadding = {
left = 0;
top = 0;
bottom = 0;
right = 0;/*指定文本输出内边距,在前景内边距上叠加,可以使用负数,仅对文本有效*/
}
uiCtrlPlusObject.textRenderingHint = _GdipTextRenderingHint;
外观主题,例如
winform.button.theme = "Explorer"
winform.button.theme = false
开启此控件的跨线程调用功能
顶部坐标
uiCtrlPlusObject.translateAccelerator = function(msg){
/*返回是否快捷键*/
}
允许转发转发子窗口的命令(_WM_COMMAND)与通知(_WM_NOTIFY)消息,
避免子窗口 oncommand,onnotify 等回调失效。
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息,
以避免部分外观属性失。
启用嵌入编辑框功能时已自动调用此函数
uiCtrlPlusObject.trimming = _GdipStringTrimming;
创建嵌入控件,返回控件容器对象,
容器对象的 _object 成员是创建的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象。
通常使用 util.metaProperty 为容器对象添加属性元表,
属性元表可拦截属性、函数调用并调用 _object 对象,
createEmbedEx 返回的容器已添加默认代理以直接访问 COM 对象
创建嵌入控件,返回控件容器对象,
容器对象的 _object 成员是创建的 COM 对象,
容器对象可通过添加成员函数响应 COM 对象事件,
容器对象的主要作用是充当访问 COM 对象的中间代理对象,
@clsId 指定控件 CLSID,
可选在参数@2中指定 COM 对象绑定的容器对象
成功返回容器对象,失败返回false,错误信息
重绘invalidate函数指定的区块
窗口是否有效,
窗口未关闭返回 true ,
窗口已关闭或正在关闭返回 false
文本垂直对齐,
顶对齐:"top"
居中:"center"
底对齐:"bottom"
图标文本对齐请使用 iconStyle 属性的 align 字段指定垂直对齐
宽度
前景x坐标,仅用于point绘图模式,
1、0到1之间的小数表示百分比,负数表示右侧反向坐标
前景y坐标,仅用于point绘图模式,
1、0到1之间的小数表示百分比,负数表示底部反向坐标
鼠标或键盘键按下状态
注意直接修改该状态控件不负责重绘
是否选中状态
注意直接修改该状态控件不负责重绘
已禁用
注意直接修改该状态控件不负责重绘
是否按下鼠标且正在拖动
是否已得到焦点
注意直接修改该状态控件不负责重绘
鼠标是否在控件上方
注意直接修改该状态控件不负责重绘