# win.ui.ctrl.plus 库模块帮助文档

## win.ui.ctrl 成员列表 <a id="win.ui.ctrl" href="#win.ui.ctrl">&#x23;</a>

### win.ui.ctrl.plus() <a id="win.ui.ctrl.plus" href="#win.ui.ctrl.plus">&#x23;</a>
高级图像控件  

[返回对象:uiCtrlPlusObject](#uiCtrlPlusObject)

## uiCtrlPlusObject 成员列表 <a id="uiCtrlPlusObject" href="#uiCtrlPlusObject">&#x23;</a>

### uiCtrlPlusObject._embedObject <a id="uiCtrlPlusObject._embedObject" href="#uiCtrlPlusObject._embedObject">&#x23;</a>
嵌入 COM 控件的容器对象  

[返回对象:embedObject](https://www.aardio.com/zh-cn/doc/library-reference/com/_.html#embedObject)

### uiCtrlPlusObject._parentForm <a id="uiCtrlPlusObject._parentForm" href="#uiCtrlPlusObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/_.html#winform)

### uiCtrlPlusObject.addCtrl() <a id="uiCtrlPlusObject.addCtrl" href="#uiCtrlPlusObject.addCtrl">&#x23;</a>
[返回对象:uiCtrlPlusObject](#uiCtrlPlusObject)

### uiCtrlPlusObject.addCtrl(controlsPropertiesTable) <a id="uiCtrlPlusObject.addCtrl" href="#uiCtrlPlusObject.addCtrl">&#x23;</a>

```aardio
uiCtrlPlusObject.addCtrl(  
	cls="plus";  
	marginRight=0;marginBottom=2;  
	width=32;   
	iconText = '\uF023';  
	iconStyle={  
		align="right";font=LOGFONT(h=-15;name='FontAwesome');padding={top=3}  
	}  
	/*在 plus 控件内部添加子控件。  
	参数 @1 可指定以下三种类型参数：  
	- 指定包含名值对的表，名为添加到父窗体的控件名称，值为控件构造参数表。返回值为名值对（值为控件对象）。  
	- 包含一个或多个创建匿名控件参数表的数组。返回值为数组（数组元素为创建的控件对象）。  
	- 直接指定创建单个控件的构造参数表，必须指定 cls 字段。返回创建的控件对象。  
	*/  
)
```

### uiCtrlPlusObject.adjust <a id="uiCtrlPlusObject.adjust" href="#uiCtrlPlusObject.adjust">&#x23;</a>

```aardio
uiCtrlPlusObject.adjust = function( cx,cy,wParam ) {	   
	/*父窗口改变大小后会自动触发此事件函数。  
注意 onSize 是 adjust 事件的别名，作用相同。  
所有 win.form 创建的窗体和控件都支持 adjust 事件,  
重复赋值 adjust 会追加事件触发器而非替换原来的值。  

cx 参数为窗口客户区宽度,cy 参数为窗口客户区高度,  
wParam 参数来自 _WM_SIZE 消息的 wParam 参数，一般不用管。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息，  
定义 adjust 事件是更好的选择。  

如果主动调用此函数，则检查并执行所有之前添加的 adjust 事件函数。  
省略调用参数时 cx,cy 参数默认设为窗口大小*/    
};
```

### uiCtrlPlusObject.afterDpiChanged <a id="uiCtrlPlusObject.afterDpiChanged" href="#uiCtrlPlusObject.afterDpiChanged">&#x23;</a>

```aardio
uiCtrlPlusObject.afterDpiChanged = function(scaleX,scaleY,origScaleX,origScaleY){  
    /*DPI 缩放后回调此函数。  
scaleX,scaleY 为 DPI 缩放倍数（例如 2 表示 200% 缩放）。  
origScaleX,origScaleY 为缩放前的倍数。*/  
}
```

### uiCtrlPlusObject.align <a id="uiCtrlPlusObject.align" href="#uiCtrlPlusObject.align">&#x23;</a>
文本水平对齐,  
左对齐："left"  
居中："center"  
右对齐："right"  

图标文本请使用 iconStyle 属性的 align 字段指定水平对齐

### uiCtrlPlusObject.animation <a id="uiCtrlPlusObject.animation" href="#uiCtrlPlusObject.animation">&#x23;</a>
是否允许自动播放 GIF 动画，  
指定为 false 禁止自动播放。

### uiCtrlPlusObject.animationId <a id="uiCtrlPlusObject.animationId" href="#uiCtrlPlusObject.animationId">&#x23;</a>
动画定时器ID  
不可改动，可用于判断动画是否启动

### uiCtrlPlusObject.animationState <a id="uiCtrlPlusObject.animationState" href="#uiCtrlPlusObject.animationState">&#x23;</a>
此属性表示动画当前状态值,值null或false表示动画已停止

### uiCtrlPlusObject.appendText() <a id="uiCtrlPlusObject.appendText" href="#uiCtrlPlusObject.appendText">&#x23;</a>
追加文本。  
可指定一个或多个字符串参数（数值可自动转字符串）。  
如果 plus 控件启用了编辑模式则调用编辑框的 appendText 方法。

### uiCtrlPlusObject.argbColor <a id="uiCtrlPlusObject.argbColor" href="#uiCtrlPlusObject.argbColor">&#x23;</a>
8888 ARGB 格式（ 0xAARRGGBB ）字体颜色,支持透明或半透明。  
注意plus控件、GDI+都是ARGB格式数值表示颜色分量,即:0xAARRGGBB  
与RGB的分量顺序是反过来的

### uiCtrlPlusObject.autoResize <a id="uiCtrlPlusObject.autoResize" href="#uiCtrlPlusObject.autoResize">&#x23;</a>
是否允许跟随父窗体自动缩放

### uiCtrlPlusObject.background <a id="uiCtrlPlusObject.background" href="#uiCtrlPlusObject.background">&#x23;</a>
背景图像或背景色,  
获取值是返回 gdip.bitmap 对象或 ARGB 格式颜色数值，  
赋值时可指定图像路径、资源路径、gdip.bitmap 对象、颜色值，  
颜色值使用0xAARRGGBB格式的数值。  
赋值时指定一个路径或资源路径控件将自动缓存使用频繁的图像  
内存图像建议使用setBackground函数指定缓存名  

[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.backgroundColor <a id="uiCtrlPlusObject.backgroundColor" href="#uiCtrlPlusObject.backgroundColor">&#x23;</a>
当前状态背景颜色,  
修改背景色建议设置 background 属性为数值即可，  
直接修改 backgroundColor 不会释放之前的背景图像且不会重绘

### uiCtrlPlusObject.bkBottom <a id="uiCtrlPlusObject.bkBottom" href="#uiCtrlPlusObject.bkBottom">&#x23;</a>
背景图expand模式下九宫格切图的底部切线

### uiCtrlPlusObject.bkLeft <a id="uiCtrlPlusObject.bkLeft" href="#uiCtrlPlusObject.bkLeft">&#x23;</a>
背景图expand模式下九宫格切图的左侧切线

### uiCtrlPlusObject.bkRight <a id="uiCtrlPlusObject.bkRight" href="#uiCtrlPlusObject.bkRight">&#x23;</a>
背景图expand模式下九宫格切图的右侧切线  
如果控件显示为水平滑块控件,此属性用于预留滑块按钮大小

### uiCtrlPlusObject.bkTop <a id="uiCtrlPlusObject.bkTop" href="#uiCtrlPlusObject.bkTop">&#x23;</a>
背景图expand模式下九宫格切图的顶部切线

### uiCtrlPlusObject.border <a id="uiCtrlPlusObject.border" href="#uiCtrlPlusObject.border">&#x23;</a>

```aardio
uiCtrlPlusObject.border = {color=0x805F9EA0;radius=11;width=2}/*使用一个表对象指定当前边框样式，  
支持的字段请参考窗体设计器中设置边框样式生成的代码，  
表的其他可用字段与 skin 函数指定的 border 样式相同，请参考范例。  
修改此属性不会触发重绘。  
可使用 predraw 或 redraw,redrawTransparent 等函数重绘*/
```

### uiCtrlPlusObject.bottom <a id="uiCtrlPlusObject.bottom" href="#uiCtrlPlusObject.bottom">&#x23;</a>
底部坐标

### uiCtrlPlusObject.capture <a id="uiCtrlPlusObject.capture" href="#uiCtrlPlusObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### uiCtrlPlusObject.center(目标窗口) <a id="uiCtrlPlusObject.center" href="#uiCtrlPlusObject.center">&#x23;</a>
在目标窗口区域内居中，并调整以保证显示在父窗口或屏幕工作区内。  

参数 @1 可指定目标窗口或者目标窗口句柄，设为 0 表示桌面，  
省略目标窗口则默认取父窗口或所有者窗口。

### uiCtrlPlusObject.changeInterval(定时器ID,间隔时间,回调函数) <a id="uiCtrlPlusObject.changeInterval" href="#uiCtrlPlusObject.changeInterval">&#x23;</a>
重新设置间隔时间或回调函数

### uiCtrlPlusObject.checked <a id="uiCtrlPlusObject.checked" href="#uiCtrlPlusObject.checked">&#x23;</a>
该属性可用于切换选取状态

### uiCtrlPlusObject.className <a id="uiCtrlPlusObject.className" href="#uiCtrlPlusObject.className">&#x23;</a>
运行时类名

### uiCtrlPlusObject.clearInterval(定时器ID) <a id="uiCtrlPlusObject.clearInterval" href="#uiCtrlPlusObject.clearInterval">&#x23;</a>
删除定时器。  
参数如果为 null 则忽略不执行，  
否则定时器ID必须是 setInterval 函数或setTimeout函数的返回值。  

请注意如果定时器被删除，ID 可能被重新分配给其他定时器。  
在定时器回调函数中返回 0,false 以删除定时器是更稳妥的方式

### uiCtrlPlusObject.clearTimeout(定时器ID) <a id="uiCtrlPlusObject.clearTimeout" href="#uiCtrlPlusObject.clearTimeout">&#x23;</a>
删除定时器。  
参数如果为 null 则忽略不执行，  
否则定时器ID必须是 setInterval 函数或setTimeout函 数的返回值。  

请注意如果定时器被删除，ID 可能被重新分配给其他定时器。  
在定时器回调函数中返回 0,false 以删除定时器是更稳妥的方式

### uiCtrlPlusObject.clientHeight <a id="uiCtrlPlusObject.clientHeight" href="#uiCtrlPlusObject.clientHeight">&#x23;</a>
控件窗口客户区宽度，只读属性

### uiCtrlPlusObject.clientWidth <a id="uiCtrlPlusObject.clientWidth" href="#uiCtrlPlusObject.clientWidth">&#x23;</a>
控件窗口客户区宽度，只读属性。

### uiCtrlPlusObject.close() <a id="uiCtrlPlusObject.close" href="#uiCtrlPlusObject.close">&#x23;</a>
关闭控件窗口

### uiCtrlPlusObject.cls <a id="uiCtrlPlusObject.cls" href="#uiCtrlPlusObject.cls">&#x23;</a>
设计时类名

### uiCtrlPlusObject.color <a id="uiCtrlPlusObject.color" href="#uiCtrlPlusObject.color">&#x23;</a>
支持 0xBBGGRR 格式或 0xAARRGGBB 格式字体颜色，  
0xAARRGGBB 格式中的 AA 必须是非 0 值，否则视为 0xBBGGRR 格式 。  

如果启用了编辑模式,可同步修改编辑框字体颜色,  
注意使用argbColor修改颜色不能同步修改编辑框颜色

### uiCtrlPlusObject.createEditBox(创建控件参数) <a id="uiCtrlPlusObject.createEditBox" href="#uiCtrlPlusObject.createEditBox">&#x23;</a>

```aardio
uiCtrlPlusObject.createEditBox(   
	vscroll = true;   
	hscroll = true;   
	multiline = true;  
);/*创建并启用透明背景的richedit文本编辑框，可用参数与窗体设计器相同，  
创建文本框时应用plus控件预设的字体、颜色、水平对齐方式，  
并且使用plus控件预设的内边距限制文本编辑框显示范围。  

可使用editBox属性访问此文本编辑框，  
可通过设置plus控件的editable属性显示或隐藏文本编辑框*/
```

### uiCtrlPlusObject.createEmbed <a id="uiCtrlPlusObject.createEmbed" href="#uiCtrlPlusObject.createEmbed">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
容器对象的 _object 成员是创建的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象。  
通常使用 util.metaProperty 为容器对象添加属性元表，  
属性元表可拦截属性、函数调用并调用 _object 对象,  

createEmbedEx 返回的容器已添加默认代理以直接访问 COM 对象

### uiCtrlPlusObject.createEmbed() <a id="uiCtrlPlusObject.createEmbed" href="#uiCtrlPlusObject.createEmbed">&#x23;</a>
[返回对象:embedObject](https://www.aardio.com/zh-cn/doc/library-reference/com/_.html#embedObject)

### uiCtrlPlusObject.createEmbed(clsId,embedObj) <a id="uiCtrlPlusObject.createEmbed" href="#uiCtrlPlusObject.createEmbed">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
容器对象的 _object 成员是创建的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象,  
@clsId 指定控件 CLSID,  
可选在参数@2中指定 COM 对象绑定的容器对象  

此函数失败会抛出异常

### uiCtrlPlusObject.createEmbed(comObject,embedObj) <a id="uiCtrlPlusObject.createEmbed" href="#uiCtrlPlusObject.createEmbed">&#x23;</a>
嵌入 COM 控件,返回控件容器对象,  
容器对象的 _object 成员是传入的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象,  
@comObject 指定已创建成功的 COM 对象,  
可选在参数@2中指定 COM 对象绑定的容器对象  

此函数失败会抛出异常

### uiCtrlPlusObject.createEmbedEx <a id="uiCtrlPlusObject.createEmbedEx" href="#uiCtrlPlusObject.createEmbedEx">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
容器对象的 _object 成员是创建的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象。  
此函数返回的容器已添加元表并创建代理以直接访问 COM 对象

### uiCtrlPlusObject.createEmbedEx() <a id="uiCtrlPlusObject.createEmbedEx" href="#uiCtrlPlusObject.createEmbedEx">&#x23;</a>
[返回对象:embedObject](https://www.aardio.com/zh-cn/doc/library-reference/com/_.html#embedObject)

### uiCtrlPlusObject.createEmbedEx(clsId,embedObj) <a id="uiCtrlPlusObject.createEmbedEx" href="#uiCtrlPlusObject.createEmbedEx">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
此函数返回的容器已添加元表并创建代理以直接访问 COM 对象,  
@clsId 指定控件 CLSID,如果控件不是自内存加载,  
则可省略 @clsId 并由 firstCoClassId函数自动获,  
可选在参数@2中指定 COM 对象绑定的容器对象  

此函数失败会抛出异常

### uiCtrlPlusObject.cursor <a id="uiCtrlPlusObject.cursor" href="#uiCtrlPlusObject.cursor">&#x23;</a>
用于自定义光标（鼠标指针），启用事件通知后生效。  
可用数值（例如 `32649/*_IDC_HAND*/`）或以下字符串值指定指定预定义光标 ID:  
`arrow,ibeam,wait,cross,upArrow,  
sizeNWSE,sizeNESW,sizeWE,sizeNS,sizeAll,  
no,hand,appstarting,help,pin,person`  
也可指定为 ::User32.LoadCursor 等函数加载的光标句柄（`pointer`类型）。  
设为 null 值恢复默认光标。  

调用 skin 函数时指定 cursor 字段也可修改此属性

### uiCtrlPlusObject.directDrawBackgroundOnly() <a id="uiCtrlPlusObject.directDrawBackgroundOnly" href="#uiCtrlPlusObject.directDrawBackgroundOnly">&#x23;</a>
允许直接在背景窗口上画图  
并禁止控件在自己的窗口绘图

### uiCtrlPlusObject.disablePaint() <a id="uiCtrlPlusObject.disablePaint" href="#uiCtrlPlusObject.disablePaint">&#x23;</a>
禁用默认绘图操作

### uiCtrlPlusObject.disabled <a id="uiCtrlPlusObject.disabled" href="#uiCtrlPlusObject.disabled">&#x23;</a>
是否禁用

### uiCtrlPlusObject.disabledText <a id="uiCtrlPlusObject.disabledText" href="#uiCtrlPlusObject.disabledText">&#x23;</a>

```aardio
uiCtrlPlusObject.disabledText = ['\uF254','\uF251','\uF252','\uF253','\uF250',text='']/*disabledText 属性可以指定 3 种类型的值：  
1. 如果 disabledText 指定字符串值，则禁用此控件并显示指定文本。  
2. 如果指定一个字符串数组则创建动画逐帧显示数组里的文字图标，  
'\uF254'到'\uF250'的字符用于显示 FontAwesome 字体的沙漏动画。  
如果控件配置了 iconStyle 属性,则用图标属性（iconText）显示文字图标。  
字符串数组也可用 text 字段指定禁用状态显示的文本。  
3. 此属性指定为 null 取消禁用并恢复控件禁用之前的 text、iconText 属性*/
```

### uiCtrlPlusObject.dlgCode <a id="uiCtrlPlusObject.dlgCode" href="#uiCtrlPlusObject.dlgCode">&#x23;</a>
用于指定响应 WM_GETDLGCODE 消息的默认代码。  
如果不指定则 plus 控件会自动选择适合的代码。  
可以显式指定为一个或多个 _DLGC_ 前缀常量组合（使用 `|` 操作符）的代码。  
例如 `1/*_DLGC_WANTARROWS*/` 以及 `4/*_DLGC_WANTALLKEYS*/`。  

注意只有 plus 控件可支持此属性。  
如果控件定义了 onGetDlgCode 事件函数则 dlgCode 属性无效。

### uiCtrlPlusObject.dpiScale(x,y) <a id="uiCtrlPlusObject.dpiScale" href="#uiCtrlPlusObject.dpiScale">&#x23;</a>
将 @x,@y 表示的像素值乘以窗体当前 DPI 缩放倍数并返回,  
省略 @y 参数时仅返回 @x 转换后的值

### uiCtrlPlusObject.dpiScaleX <a id="uiCtrlPlusObject.dpiScaleX" href="#uiCtrlPlusObject.dpiScaleX">&#x23;</a>
窗口当前使用的 DPI 横坐标缩放系数,  
该值由界面系统自动维护，任何情况下都不应手动修改,  

这是一个以小数表示百分比的数，例如 1.25 表示 125%,  
窗口未使用缩放或未完成缩放初始化时，值可能为 null，  
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数

### uiCtrlPlusObject.dpiScaleY <a id="uiCtrlPlusObject.dpiScaleY" href="#uiCtrlPlusObject.dpiScaleY">&#x23;</a>
窗口当前使用的 DPI 纵坐标缩放系数,  
该值由界面系统自动维护，任何情况下都不应手动修改,  

这是一个以小数表示百分比的数，例如 1.25 表示 125%,  
窗口未使用缩放或未完成缩放初始化时，值可能为 null，  
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数

### uiCtrlPlusObject.drawToDevice(hdc,x,y) <a id="uiCtrlPlusObject.drawToDevice" href="#uiCtrlPlusObject.drawToDevice">&#x23;</a>
输出控件图像到hdc参数指定的GDI绘图设备,  
x,y为输出坐标,如果绘图到父窗口,x,y参数可省略

### uiCtrlPlusObject.drawToGraphics(graphics,x,y) <a id="uiCtrlPlusObject.drawToGraphics" href="#uiCtrlPlusObject.drawToGraphics">&#x23;</a>
输出控件图像到hdc参数指定的GDI+画板,  
x,y为输出坐标,如果绘图到父窗口,x,y参数可省略

### uiCtrlPlusObject.editBox <a id="uiCtrlPlusObject.editBox" href="#uiCtrlPlusObject.editBox">&#x23;</a>
文本编辑框,此文本框也是一个win.ui.tracker对象,  

[返回对象:richeditObject](#richeditObject)

### uiCtrlPlusObject.editState <a id="uiCtrlPlusObject.editState" href="#uiCtrlPlusObject.editState">&#x23;</a>
允许共享内部编辑框的外观状态,不指定默认值为true,  
如果希望利用文本边距、前景边距等模拟分离按钮  
可将此值显示指定为false

### uiCtrlPlusObject.editable <a id="uiCtrlPlusObject.editable" href="#uiCtrlPlusObject.editable">&#x23;</a>
是否允许编辑文本  
如果此值设为true则切换到可编辑模式,  
也可以指定要嵌入的编辑框的类名，例如"edit",  
不指定类名则创建透明背景的richedit文本编辑框  

在首次切换到可编辑模式下创建文本框，  
并同步应用plus控件预设的字体、颜色、水平对齐方式，  
并使用plus控件预设的内边距限制文本编辑框显示范围。  

可使用editBox属性访问此文本编辑框，  
如果文本编辑框已创建，再次修改editable仅显示或隐藏文本编辑框

### uiCtrlPlusObject.enableDpiScaling(false) <a id="uiCtrlPlusObject.enableDpiScaling" href="#uiCtrlPlusObject.enableDpiScaling">&#x23;</a>
禁用DPI自动缩放,  
不指定参数启用DPI自动缩放,默认已启用

### uiCtrlPlusObject.fitContent () <a id="uiCtrlPlusObject.fitContent " href="#uiCtrlPlusObject.fitContent ">&#x23;</a>
控件调整大小调整到适应当前显示字数

### uiCtrlPlusObject.focusOnClick <a id="uiCtrlPlusObject.focusOnClick" href="#uiCtrlPlusObject.focusOnClick">&#x23;</a>
设为 false 时禁止在单击控件时设置此控件为焦点控件

### uiCtrlPlusObject.font <a id="uiCtrlPlusObject.font" href="#uiCtrlPlusObject.font">&#x23;</a>
控件字体（LOGFONT 结构体），  
注意获取该属性总是返回新的 LOGFONT 对象，  
修改返回字体并不会更新控件字体，  
除非重新赋值。  

建议尽量优先使用 getFont 或 setFont 函数，  
以增强代码可读性  

字体会根据控件设置自动处理 DPI 缩放，不需要事先缩放字体大小

### uiCtrlPlusObject.fontCharMap <a id="uiCtrlPlusObject.fontCharMap" href="#uiCtrlPlusObject.fontCharMap">&#x23;</a>
指定自定义字符映射表,  
键为字符,值为用于显示字符的gdip.bitmap对象  
如果指定了此属性则忽略字体大小,使用textPadding以及内边距限制输出大小

### uiCtrlPlusObject.foreBottom <a id="uiCtrlPlusObject.foreBottom" href="#uiCtrlPlusObject.foreBottom">&#x23;</a>
前景图expand模式下九宫格切图的底部切线

### uiCtrlPlusObject.foreLeft <a id="uiCtrlPlusObject.foreLeft" href="#uiCtrlPlusObject.foreLeft">&#x23;</a>
前景图expand模式下九宫格切图的左侧切线

### uiCtrlPlusObject.foreRepeat <a id="uiCtrlPlusObject.foreRepeat" href="#uiCtrlPlusObject.foreRepeat">&#x23;</a>
前景显示模式  
支持模式expand,stretch,center,tile,scale  
如果为null则foreLeft,foreRight为偏移坐标\expand模式foreTop,foreRight,foreBottom,foreLeft为九宫格切图坐标  
其他模式为显示边距

### uiCtrlPlusObject.foreRight <a id="uiCtrlPlusObject.foreRight" href="#uiCtrlPlusObject.foreRight">&#x23;</a>
前景图expand模式下九宫格切图的右侧切线

### uiCtrlPlusObject.foreTop <a id="uiCtrlPlusObject.foreTop" href="#uiCtrlPlusObject.foreTop">&#x23;</a>
前景图expand模式下九宫格切图的顶部切线  
如果控件显示为垂直滑块控件,此属性用于预留滑块按钮大小

### uiCtrlPlusObject.foreground <a id="uiCtrlPlusObject.foreground" href="#uiCtrlPlusObject.foreground">&#x23;</a>
前景图像或前景色,  
获取值是返回 gdip.bitmap 对象或 ARGB 格式颜色数值，  
赋值时可指定图像路径、资源路径、gdip.bitmap 对象、颜色值，  
颜色值使用0xAARRGGBB格式的数值。  
赋值时指定一个路径或资源路径控件将自动缓存使用频繁的图像  
内存图像建议使用setForeground函数指定缓存名  
如果边框圆角设为-1,前景图或前景色会裁剪为圆形后输出,  

[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.foregroundColor <a id="uiCtrlPlusObject.foregroundColor" href="#uiCtrlPlusObject.foregroundColor">&#x23;</a>
当前状态前景颜色,  
修改背景色建议设置 foreground 属性为数值即可，  
直接修改 foregroundColor 不会释放之前的前景图像且不会重绘

### uiCtrlPlusObject.getBackground() <a id="uiCtrlPlusObject.getBackground" href="#uiCtrlPlusObject.getBackground">&#x23;</a>
返回背景图像,返回值为gdip.bitmap对象  
此函数不会返回背景色，仅返回背景图像,  
如果不存在背景图像返回null  

[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.getClientRect() <a id="uiCtrlPlusObject.getClientRect" href="#uiCtrlPlusObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### uiCtrlPlusObject.getFont() <a id="uiCtrlPlusObject.getFont" href="#uiCtrlPlusObject.getFont">&#x23;</a>
返回控件 LOGFONT 字体，  
返回对象的 h 值会按控件的 DPI 缩放设置自动还原为缩放前大小。  

[返回对象:logfontObject](#logfontObject)

### uiCtrlPlusObject.getFont(true) <a id="uiCtrlPlusObject.getFont" href="#uiCtrlPlusObject.getFont">&#x23;</a>
返回控件 LOGFONT 字体，  
返回对象的 h 值为字体实际大小，不会按控件 DPI 设置还原。  
返回字体会设置 noScale 属性为 true,  
使用控件的 setFont 函数或赋值 font 属性时，  
noScale 属性为 true 的字体同样不会进行自动 DPI 缩放  

[返回对象:logfontObject](#logfontObject)

### uiCtrlPlusObject.getFontEx() <a id="uiCtrlPlusObject.getFontEx" href="#uiCtrlPlusObject.getFontEx">&#x23;</a>
返回gdip.font字体  
注意字体生命期由控件管理  

[返回对象:gdipfontObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/font.html#gdipfontObject)

### uiCtrlPlusObject.getForeground() <a id="uiCtrlPlusObject.getForeground" href="#uiCtrlPlusObject.getForeground">&#x23;</a>
返回前景图像,返回值为gdip.bitmap对象  
此函数不会返回前景色，仅返回前景图像,  
如果不存在前景图像返回null  

[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.getForm() <a id="uiCtrlPlusObject.getForm" href="#uiCtrlPlusObject.getForm">&#x23;</a>
标准库 win.ui 创建的所有窗体与控件对象都拥有此属性。  
win.form 创建的窗体对象返回自身，其他控件对象返回创建控件的容器窗口（ _parentForm 属性 ）

### uiCtrlPlusObject.getParent() <a id="uiCtrlPlusObject.getParent" href="#uiCtrlPlusObject.getParent">&#x23;</a>
返回父窗口

### uiCtrlPlusObject.getPos() <a id="uiCtrlPlusObject.getPos" href="#uiCtrlPlusObject.getPos">&#x23;</a>
返回相对父窗口客户区的坐标,宽,高,  
参数为true返回屏幕坐标,宽,高,  
x,y,cx,cy=win.getPos(hwnd)

### uiCtrlPlusObject.getProgressRange() <a id="uiCtrlPlusObject.getProgressRange" href="#uiCtrlPlusObject.getProgressRange">&#x23;</a>
返回进度条最小值,最大值

### uiCtrlPlusObject.getRect() <a id="uiCtrlPlusObject.getRect" href="#uiCtrlPlusObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### uiCtrlPlusObject.getRect(true) <a id="uiCtrlPlusObject.getRect" href="#uiCtrlPlusObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### uiCtrlPlusObject.getRoot() <a id="uiCtrlPlusObject.getRoot" href="#uiCtrlPlusObject.getRoot">&#x23;</a>
获取顶层父窗口，这个函数会查找 orphanWindow 的父窗口

### uiCtrlPlusObject.getScale() <a id="uiCtrlPlusObject.getScale" href="#uiCtrlPlusObject.getScale">&#x23;</a>
返回 X 轴、Y 轴方向缩放比例，DPI 缩放比例共 4 个返回值,  
scaleX,scaleY,dpiScaleX,dpiScale 。  
win.ui 创建的所有窗体与控件对象都提供此方法。

### uiCtrlPlusObject.height <a id="uiCtrlPlusObject.height" href="#uiCtrlPlusObject.height">&#x23;</a>
高度

### uiCtrlPlusObject.hide <a id="uiCtrlPlusObject.hide" href="#uiCtrlPlusObject.hide">&#x23;</a>
当前控件窗口是否隐藏。  
仅检查当前窗口的可见性样式（窗口 是否移除了 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。

### uiCtrlPlusObject.hotkeyPrefix <a id="uiCtrlPlusObject.hotkeyPrefix" href="#uiCtrlPlusObject.hotkeyPrefix">&#x23;</a>

```aardio
uiCtrlPlusObject.hotkeyPrefix = _GdipHotkeyPrefixShow;
```

### uiCtrlPlusObject.hwnd <a id="uiCtrlPlusObject.hwnd" href="#uiCtrlPlusObject.hwnd">&#x23;</a>
控件句柄

### uiCtrlPlusObject.iconColor <a id="uiCtrlPlusObject.iconColor" href="#uiCtrlPlusObject.iconColor">&#x23;</a>
字体图标颜色，支持半透明。  
支持使用 skin 函数动态切换此样﻿式,  
此颜色值在运行时使用 ARGB 格式，即:0xAARRGGBB，在创建控件的初始化参数中则必须指定 0xBBGGRR 格式 颜色值。  

请注意在未指定指属性时，图标字体默认与字体使用相同的颜色

### uiCtrlPlusObject.iconFont <a id="uiCtrlPlusObject.iconFont" href="#uiCtrlPlusObject.iconFont">&#x23;</a>
图标字体，LOGFONT 结构体。  
获取值时，如果存在 iconStyle.font，直接返回 iconStyle.font。  
对 iconFont 赋值总是会创建新的 LOGFONT 结构并存为 iconStyle.font   
使用 iconFont 赋值时可以传入仅指定 LOGFONT 部分成员的普通表。  

修改返回字体的成员不会更新 plus 控件实际使用的 GDI+ 字体。  
只有重新对 iconFont 赋值 ，才会在下次重绘时刷新 GDI+ 字体  

图标字体会根据控件设置自动处理 DPI 缩放，不需要事先缩放字体大小  

[返回对象:logfontObject](#logfontObject)

### uiCtrlPlusObject.iconStyle <a id="uiCtrlPlusObject.iconStyle" href="#uiCtrlPlusObject.iconStyle">&#x23;</a>

```aardio
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 则总是会刷新字体*/
}
```

### uiCtrlPlusObject.iconText <a id="uiCtrlPlusObject.iconText" href="#uiCtrlPlusObject.iconText">&#x23;</a>
指定文本图标  
使用iconStyle指定字体与样式

### uiCtrlPlusObject.iconTextRenderingHint <a id="uiCtrlPlusObject.iconTextRenderingHint" href="#uiCtrlPlusObject.iconTextRenderingHint">&#x23;</a>

```aardio
uiCtrlPlusObject.iconTextRenderingHint = _GdipTextRenderingHint;
```

### uiCtrlPlusObject.id <a id="uiCtrlPlusObject.id" href="#uiCtrlPlusObject.id">&#x23;</a>
控件ID

### uiCtrlPlusObject.imageAttributes <a id="uiCtrlPlusObject.imageAttributes" href="#uiCtrlPlusObject.imageAttributes">&#x23;</a>
可选使用一个gdip.imageAttributes对象对前景图像进行自动调色  
如果需要在不同状态下调色,可以在onStateChange事件里动态设置调色矩阵  

[返回对象:gdipImgattrObject](#gdipImgattrObject)

### uiCtrlPlusObject.interpolationMode <a id="uiCtrlPlusObject.interpolationMode" href="#uiCtrlPlusObject.interpolationMode">&#x23;</a>
图像缩放时的默认插值模式,  
默认值为_GdipInterpolationModeHighQualityBicubic

### uiCtrlPlusObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="uiCtrlPlusObject.invalidate(/*可选使用::RECT" href="#uiCtrlPlusObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### uiCtrlPlusObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="uiCtrlPlusObject.invalidate(/*可选使用::RECT" href="#uiCtrlPlusObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### uiCtrlPlusObject.isDialogMessage <a id="uiCtrlPlusObject.isDialogMessage" href="#uiCtrlPlusObject.isDialogMessage">&#x23;</a>

```aardio
uiCtrlPlusObject.isDialogMessage = function(hParent,msg){/*在控件范围内替代父窗口的 isDialogMessage，  
可用于在控件范围内屏蔽对话框快捷键*/}
```

### uiCtrlPlusObject.isForm <a id="uiCtrlPlusObject.isForm" href="#uiCtrlPlusObject.isForm">&#x23;</a>
标准库 win.ui 创建的所有窗体与控件对象都拥有此属性。  
win.form 创建的窗体对象返回 true,其他控件对象返回 false 。

### uiCtrlPlusObject.isHyperlink() <a id="uiCtrlPlusObject.isHyperlink" href="#uiCtrlPlusObject.isHyperlink">&#x23;</a>
是否超链接模式（非禁用状态下鼠标指针显示为手形）。  
设为此模式的控件的 mode 属性值为 "hyperlink"。  
可在创建控件的表参数中指定 `mode = "hyperlink"`以切换到超链接模式。  

当调用 skin 函数设置样式时，  
如果未指定 mode 属性、cursor 属性、背景、前景、边框、iconText，  
并且仅指定了文本非空，则默认设为超链接模式。

### uiCtrlPlusObject.left <a id="uiCtrlPlusObject.left" href="#uiCtrlPlusObject.left">&#x23;</a>
左侧坐标

### uiCtrlPlusObject.linearGradient <a id="uiCtrlPlusObject.linearGradient" href="#uiCtrlPlusObject.linearGradient">&#x23;</a>
数值,指定背景色线性渐变的角度,  
渐变从背色颜色开始,到前景颜色结束  
只有背景、前景都指定了当前状态下的颜色值才有效,  
270,90为垂直方向的渐变  
180,360为水平方向的渐变  

此属性指定为负数启用圆形径向渐变,此时background为中心颜色，foreground为环绕颜色

### uiCtrlPlusObject.measureString() <a id="uiCtrlPlusObject.measureString" href="#uiCtrlPlusObject.measureString">&#x23;</a>
返回文本输出后的区块大小,返回值为 RECTF 对象  
可选在参数中指定要输出的文本,不指定则取当前显示文本,  

[返回对象:rectfObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/core.html#rectfObject)

### uiCtrlPlusObject.messageOnly() <a id="uiCtrlPlusObject.messageOnly" href="#uiCtrlPlusObject.messageOnly">&#x23;</a>
将窗口转换为message-only window  
该窗口不可见,仅用于消息分发

### uiCtrlPlusObject.modifyStyle(remove,add,swpFlags) <a id="uiCtrlPlusObject.modifyStyle" href="#uiCtrlPlusObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### uiCtrlPlusObject.modifyStyleEx(remove,add,swpFlags) <a id="uiCtrlPlusObject.modifyStyleEx" href="#uiCtrlPlusObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### uiCtrlPlusObject.msgAsk(text) <a id="uiCtrlPlusObject.msgAsk" href="#uiCtrlPlusObject.msgAsk">&#x23;</a>
显示询问提示框。  
参数 @text 指定要显示的文本信息。  
用户按确定或回车返回 true ，其他返回 false 或 null 。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgErr(text,timeout) <a id="uiCtrlPlusObject.msgErr" href="#uiCtrlPlusObject.msgErr">&#x23;</a>
显示错误提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgFrown(text,timeout) <a id="uiCtrlPlusObject.msgFrown" href="#uiCtrlPlusObject.msgFrown">&#x23;</a>
显示皱眉图标提示框。  
参数 @text 指定要显示的文本信息。  
可选用参数 @2 指定延时关闭的毫秒数,  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgGreat(text,timeout) <a id="uiCtrlPlusObject.msgGreat" href="#uiCtrlPlusObject.msgGreat">&#x23;</a>
显示竖大拇指图标提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgInfo(text,timeout) <a id="uiCtrlPlusObject.msgInfo" href="#uiCtrlPlusObject.msgInfo">&#x23;</a>
显示提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgOk(text,timeout) <a id="uiCtrlPlusObject.msgOk" href="#uiCtrlPlusObject.msgOk">&#x23;</a>
显示正确提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgSmile(text,timeout) <a id="uiCtrlPlusObject.msgSmile" href="#uiCtrlPlusObject.msgSmile">&#x23;</a>
显示微笑图标提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgWarn(text,timeout) <a id="uiCtrlPlusObject.msgWarn" href="#uiCtrlPlusObject.msgWarn">&#x23;</a>
显示警告提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.msgbox(text,title,style,timeout) <a id="uiCtrlPlusObject.msgbox" href="#uiCtrlPlusObject.msgbox">&#x23;</a>
弹出对话框  
1. 参数 @text 指定显示的数据，如果指表对象则先序列化为文本。  
参数 @text 是其他类型则调用 tostring 转换为文本。  
2. 可选参数 @title 用于指定信息框标题。  
3. 可选参数 @style 可用字符串或数值指定图标样式（参考 _MB_ 前缀常量值，设为 0 去掉图标与提示音），也可以指定字符串值：  
    * "error","stop","hand" 错误图标  
    * "question" 询问图标，显示是、否、取消按钮，返回值为 `6/*_IDYES*/,7/*_IDNO*/, 2/*_IDCANCEL*/` 之一。  
    * "confirm","test" 询问图标，显示确定与取消按钮，返回值为 `1/*_IDOK*/,2/*_IDCANCEL*/` 之一。  
- "warn" 警告图标  
    * "info" 信息图标。  
4. 可选用参数 @timeout 限定显示时间，以毫秒为单位，超时自动关闭。

### uiCtrlPlusObject.msgboxErr(text,title) <a id="uiCtrlPlusObject.msgboxErr" href="#uiCtrlPlusObject.msgboxErr">&#x23;</a>
弹出错误对话框  
参数 @text 指定显示的信息，如果指定表对象先序列化为文本。  
其他对象调用 tostring 转换为文本  
可选参数 @title 用于指定信息框标题。  

此函数调用 win.msgbox，并设定所有者窗口为当前窗体。

### uiCtrlPlusObject.msgboxTest(text,title) <a id="uiCtrlPlusObject.msgboxTest" href="#uiCtrlPlusObject.msgboxTest">&#x23;</a>
弹出询问对话框  
参数 @text 指定显示的信息，如果指定表对象先序列化为文本。  
其他对象调用 tostring 转换为文本  
可选参数 @title 用于指定信息框标题。  

此函数调用 win.msgbox，并设定所有者窗口为当前窗体。

### uiCtrlPlusObject.notify <a id="uiCtrlPlusObject.notify" href="#uiCtrlPlusObject.notify">&#x23;</a>
是否启用事件回调。  
设为 false 将不能响应鼠标按键等交互事件。  

调用 skin,setTrackbarRange 等方法或者  
添加 oncommand,onMouseMove ,onMouseDown,onMouseClick,onKeyDown 事件时  
会自动启用此属性。

### uiCtrlPlusObject.oncommand <a id="uiCtrlPlusObject.oncommand" href="#uiCtrlPlusObject.oncommand">&#x23;</a>

```aardio
uiCtrlPlusObject.oncommand = function( id,event ){
	/*控件被单击*/
}
```

### uiCtrlPlusObject.onnotify <a id="uiCtrlPlusObject.onnotify" href="#uiCtrlPlusObject.onnotify">&#x23;</a>

```aardio
uiCtrlPlusObject.onnotify = function(id,code,ptr){
	/*处理通知消息,  
plus 控件默认不发送通知消息,  
但如果绑定 tooltip 控件这些会触发这个事件*/
}
```

### uiCtrlPlusObject.orphanWindow <a id="uiCtrlPlusObject.orphanWindow" href="#uiCtrlPlusObject.orphanWindow">&#x23;</a>
如果当前是子窗口,  
移除窗口的WS_CHILD样式，使窗口孤立出来悬浮于原位置,  
悬浮窗口如影随形的跟随父窗口移动或改变大小,控件原来的固定边距等参数仍然有效

### uiCtrlPlusObject.orphanWindow(transparent,hwndBuddy) <a id="uiCtrlPlusObject.orphanWindow" href="#uiCtrlPlusObject.orphanWindow">&#x23;</a>
创建悬浮窗口,  
悬浮窗口仍然显示在原来的位置,  
可选参数 @transparent 如果为 true 则转换为分层透明窗口,  
可选利用 @buddy 参数将只有句柄的窗口托管在悬浮窗口之上实现相同的效果,  
伙伴窗口总是会保持在悬浮窗口前面，并保持相同的大小、位置

### uiCtrlPlusObject.padding <a id="uiCtrlPlusObject.padding" href="#uiCtrlPlusObject.padding">&#x23;</a>

```aardio
uiCtrlPlusObject.padding = {
	left = 0;
	top = 0;
	bottom = 0;
	right = 0;/*指定前景边距，限制前景与文本区边距。  
文本区可使用 textPadding 再次叠加边距。*/
}
```

### uiCtrlPlusObject.paddingBottom <a id="uiCtrlPlusObject.paddingBottom" href="#uiCtrlPlusObject.paddingBottom">&#x23;</a>
前景下边距  
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距  

滑块模式下,此属性将同时作用于背景色，作不会作用于背景图像

### uiCtrlPlusObject.paddingLeft <a id="uiCtrlPlusObject.paddingLeft" href="#uiCtrlPlusObject.paddingLeft">&#x23;</a>
前景左边距  
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距  

滑块模式下,此属性将同时作用于背景色，作不会作用于背景图像

### uiCtrlPlusObject.paddingRight <a id="uiCtrlPlusObject.paddingRight" href="#uiCtrlPlusObject.paddingRight">&#x23;</a>
前景右边距  
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距  

滑块模式下,此属性将同时作用于背景色，作不会作用于背景图像

### uiCtrlPlusObject.paddingTop <a id="uiCtrlPlusObject.paddingTop" href="#uiCtrlPlusObject.paddingTop">&#x23;</a>
前景上边距  
可限制前景以及文本,文本还可以使用textPadding属性进一步增减边距  

滑块模式下,此属性将同时作用于背景色，作不会作用于背景图像

### uiCtrlPlusObject.passwordChar <a id="uiCtrlPlusObject.passwordChar" href="#uiCtrlPlusObject.passwordChar">&#x23;</a>
指定隐藏密码的占位字符,  
例如指定为"*"隐藏密码,指定为null正常显示文本  
如果调用了setCueBannerText，passwordChar不会影响提示文本

### uiCtrlPlusObject.postMessage(msg,wParam,lParam) <a id="uiCtrlPlusObject.postMessage" href="#uiCtrlPlusObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### uiCtrlPlusObject.preadjust <a id="uiCtrlPlusObject.preadjust" href="#uiCtrlPlusObject.preadjust">&#x23;</a>

```aardio
uiCtrlPlusObject.preadjust = function( cx,cy,wParam ) {	   
	/*窗口缩放后重绘前、触发 adjust 事件之前触发此事件。  
所有 win.form 创建的窗体和控件都支持此事件,  
与 adjust 事件不同，对 preadjust 重复赋值则覆盖而不是追加事件。   

cx 参数为窗口宽度,cy 参数为窗口高度,  
wParam 为 _WM_SIZE 消息参数。*/    
};
```

### uiCtrlPlusObject.predraw() <a id="uiCtrlPlusObject.predraw" href="#uiCtrlPlusObject.predraw">&#x23;</a>
刷新位图缓存并准备下次重绘

### uiCtrlPlusObject.progressPercentage <a id="uiCtrlPlusObject.progressPercentage" href="#uiCtrlPlusObject.progressPercentage">&#x23;</a>
进度条当前百分比。  
如果用户正在控件上按下鼠标（例如拖动滑块），设置此属性会被忽略

### uiCtrlPlusObject.progressPos <a id="uiCtrlPlusObject.progressPos" href="#uiCtrlPlusObject.progressPos">&#x23;</a>
获取或设置进度条当前值。  
如果用户正在控件上按下鼠标（例如拖动滑块），设置此属性会被忽略

### uiCtrlPlusObject.publish("字符串参数",) <a id="uiCtrlPlusObject.publish" href="#uiCtrlPlusObject.publish">&#x23;</a>
在窗口所在界面线程发布消息,  
运行界面线程所有所有调用subscribe函数订阅此消息的函数,  
可添加任意个触发参数

### uiCtrlPlusObject.radioClick() <a id="uiCtrlPlusObject.radioClick" href="#uiCtrlPlusObject.radioClick">&#x23;</a>
单选模式下选中控件

### uiCtrlPlusObject.radioGroup <a id="uiCtrlPlusObject.radioGroup" href="#uiCtrlPlusObject.radioGroup">&#x23;</a>
用于指定单选按钮分组名称。  
也可以在 skin 函数参数表的 group 字段中指定此属性值。

### uiCtrlPlusObject.radioValue() <a id="uiCtrlPlusObject.radioValue" href="#uiCtrlPlusObject.radioValue">&#x23;</a>
单选模式下选中控件的文本

### uiCtrlPlusObject.redraw() <a id="uiCtrlPlusObject.redraw" href="#uiCtrlPlusObject.redraw">&#x23;</a>
刷新重绘，默认不重绘背景。  
如果控件未指定 background 或 backgroundColor 属性但启用了“剪切背景”属性（默认设置）仍然会重绘背景。

### uiCtrlPlusObject.redrawTransparent() <a id="uiCtrlPlusObject.redrawTransparent" href="#uiCtrlPlusObject.redrawTransparent">&#x23;</a>
刷新重绘  
如果控件添加了透明样式 _WS_EX_TRANSPARENT 则重绘窗口背景

### uiCtrlPlusObject.reduce(array,callback,debounce) <a id="uiCtrlPlusObject.reduce" href="#uiCtrlPlusObject.reduce">&#x23;</a>

```aardio
uiCtrlPlusObject.reduce(  
	[/*参数 1 @array 指定要循环处理每个元素的数组或表。  
@array 指定为 false 则取消之前创建的防抖单例循环。  

参数 2 @callback 指定回调函数。  

    回调函数中可返回本次间隔延时，以毫秒为单位。  
    返回 0、null、false、以及不能转换为非 0 数的值中断处理。  
    回调参数为：当前数组元素值,当前索引,数组长度,本轮动画已执行毫秒数,  
    处理到数组尾部时回调参数 @1 为 null,  
    如果此时仍然返回可转换为非 0 数的值,将转到第一个数组元素重复循环。  

参数 3 @debounce 指定是否创建为防抖单例循环，默认为 true。*/],  
	function(value,index,length,currentTime){  
		if(value){  
			var duration = 2000;  
			var x = currentTime/duration;  
			var change = 1+length*(x * x * x * x);  
			var delay = (duration / length) / change;  
			return delay;  
		}  
	}   
)
```

### uiCtrlPlusObject.reloadScale() <a id="uiCtrlPlusObject.reloadScale" href="#uiCtrlPlusObject.reloadScale">&#x23;</a>
按设计时位置参数、重新调整控件位置以适应窗口当前缩放比例。  
父窗口缩放时会自动执行此操作。  
默认在启动窗口消息循环时会自适应调整所有控件。  
所以在启动消息循环前添加控件不必调用此函数。

### uiCtrlPlusObject.repeat <a id="uiCtrlPlusObject.repeat" href="#uiCtrlPlusObject.repeat">&#x23;</a>
背景显示模式  
支持模式expand,stretch,center,tile,scale\expand模式foreTop,foreRight,foreBottom,foreLeft为九宫格切图坐标  
其他模式为显示边距

### uiCtrlPlusObject.resize(宽度,高度) <a id="uiCtrlPlusObject.resize" href="#uiCtrlPlusObject.resize">&#x23;</a>
如果指定了参数则调整窗口大小,  
无论是否实际调整窗口大小,发送 _WM_SIZE 消息给窗口

### uiCtrlPlusObject.right <a id="uiCtrlPlusObject.right" href="#uiCtrlPlusObject.right">&#x23;</a>
右侧坐标

### uiCtrlPlusObject.saveScale() <a id="uiCtrlPlusObject.saveScale" href="#uiCtrlPlusObject.saveScale">&#x23;</a>
根据控件当前位置、缩放比例，更新控件的设计时位置参数。  
以避免下次窗口缩放自适应调整控件当前位置更改被清除，  
控件所有调整位置的属性或成员函数已自动调用此函数。

### uiCtrlPlusObject.sendMessage(msg,wParam,lParam) <a id="uiCtrlPlusObject.sendMessage" href="#uiCtrlPlusObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### uiCtrlPlusObject.setBackground <a id="uiCtrlPlusObject.setBackground" href="#uiCtrlPlusObject.setBackground">&#x23;</a>
修改背景图像

### uiCtrlPlusObject.setBackground() <a id="uiCtrlPlusObject.setBackground" href="#uiCtrlPlusObject.setBackground">&#x23;</a>
[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.setBackground(背景图像,false) <a id="uiCtrlPlusObject.setBackground" href="#uiCtrlPlusObject.setBackground">&#x23;</a>
加载背景图像并禁用缓存  
该函数设置成功返回原来的背景图（gdip.bitmap 对象）

### uiCtrlPlusObject.setBackground(背景图像,缓存名,刷新重绘) <a id="uiCtrlPlusObject.setBackground" href="#uiCtrlPlusObject.setBackground">&#x23;</a>
参数@1也可以使用0xAARRGGBB格式的数值指定一个颜色值,  
缓存名为可选参数,默认以路径为缓存名,设为false禁止缓存,  
如果参数@1是图像数据则可以使用参数@2指定缓存名  
刷新重绘参数@3默认为true  
该函数设置成功返回原来的背景图（gdip.bitmap 对象）

### uiCtrlPlusObject.setCueBannerText <a id="uiCtrlPlusObject.setCueBannerText" href="#uiCtrlPlusObject.setCueBannerText">&#x23;</a>
并且指定嵌入编辑框为空时的显示的默认提示文本  
嵌入richedit时调用此函数会阻止拖放文件消息,  
嵌入编辑框改为edit即可

### uiCtrlPlusObject.setCueBannerText("提示文本") <a id="uiCtrlPlusObject.setCueBannerText" href="#uiCtrlPlusObject.setCueBannerText">&#x23;</a>
打开编辑模式,  
并且指定文本为空时的显示的默认提示文本  
注意指定提示文本以后,  
不应再直接访问editBox的text,passwordChar属性,  
请改为读写plus控件的text,passwordChar属性

### uiCtrlPlusObject.setFocus() <a id="uiCtrlPlusObject.setFocus" href="#uiCtrlPlusObject.setFocus">&#x23;</a>
设置焦点  
可选在参数中指定新的控件文本  
如果启用了编辑模式,此函数将光标移动文本尾部

### uiCtrlPlusObject.setFont(指定字体) <a id="uiCtrlPlusObject.setFont" href="#uiCtrlPlusObject.setFont">&#x23;</a>
指定 LOGFONT 字体对象,或逻辑字体句柄  
如果不指定 point 值并指定 h 值，字体会按控件的 DPI 缩放设置自动缩放。

### uiCtrlPlusObject.setFont(混入字体属性) <a id="uiCtrlPlusObject.setFont" href="#uiCtrlPlusObject.setFont">&#x23;</a>

```aardio
uiCtrlPlusObject.setFont(h=-12;name="Tahoma");
```

### uiCtrlPlusObject.setFontEx(字体) <a id="uiCtrlPlusObject.setFontEx" href="#uiCtrlPlusObject.setFontEx">&#x23;</a>
设置gdip.font字体  
字体由控件接管并负责释放

### uiCtrlPlusObject.setForeRepeat("模式",是否重绘) <a id="uiCtrlPlusObject.setForeRepeat" href="#uiCtrlPlusObject.setForeRepeat">&#x23;</a>
修改前景显示模式  
支持模式expand,stretch,center,tile,scale

### uiCtrlPlusObject.setForeground <a id="uiCtrlPlusObject.setForeground" href="#uiCtrlPlusObject.setForeground">&#x23;</a>
修改前景图像

### uiCtrlPlusObject.setForeground() <a id="uiCtrlPlusObject.setForeground" href="#uiCtrlPlusObject.setForeground">&#x23;</a>
[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/bitmap.html#gdipbitmapObject)

### uiCtrlPlusObject.setForeground(前景图像,缓存名,刷新重绘) <a id="uiCtrlPlusObject.setForeground" href="#uiCtrlPlusObject.setForeground">&#x23;</a>
修改前景图像  
参数@1也可以使用0xAARRGGBB格式的数值指定一个颜色值,  
缓存名为可选参数,默认以路径为缓存名,设为false禁止缓存,  
如果参数@1是图像数据则可以使用参数@2指定缓存名  
刷新重绘参数@3默认为true  
该函数设置成功返回原来的前景图图（gdip.bitmap 对象）

### uiCtrlPlusObject.setForeground(背景图像,false) <a id="uiCtrlPlusObject.setForeground" href="#uiCtrlPlusObject.setForeground">&#x23;</a>
加载前景图像并禁用缓存  
该函数设置成功返回原来的背景图（gdip.bitmap 对象）

### uiCtrlPlusObject.setForeground(颜色数值) <a id="uiCtrlPlusObject.setForeground" href="#uiCtrlPlusObject.setForeground">&#x23;</a>
修改foregroundColor的值  
注意plus控件、GDI+都是ARGB格式数值表示颜色分量,即:0xAARRGGBB  
与RGB的分量顺序是反过来的

### uiCtrlPlusObject.setInterval(回调函数,延时毫秒数,...) <a id="uiCtrlPlusObject.setInterval" href="#uiCtrlPlusObject.setInterval">&#x23;</a>

```aardio
uiCtrlPlusObject.setInterval(回调函数,延时毫秒数,...setInterval(   
	function(){  
		/*参数@1指定执行函数,参数@2指定执行间隔，  
可选指定一个或多个回调参数，不指定回调参数则默认为:  
 hwnd,message,timerId,tick,  

如果在定时器中执行了win.delay等继续消息循环的代码，  
在定时器退出前不会再触发同一定时器（重入）。  

定时器回调函数返回数值可修改时间间隔,  
返回false取消该定时器*/  
	},1000   
)
```

### uiCtrlPlusObject.setParent(控件对象) <a id="uiCtrlPlusObject.setParent" href="#uiCtrlPlusObject.setParent">&#x23;</a>
改变父窗口

### uiCtrlPlusObject.setPieRange <a id="uiCtrlPlusObject.setPieRange" href="#uiCtrlPlusObject.setPieRange">&#x23;</a>
设置扇形进度条范围。

### uiCtrlPlusObject.setPieRange(min,max,cutoutPercentage) <a id="uiCtrlPlusObject.setPieRange" href="#uiCtrlPlusObject.setPieRange">&#x23;</a>
切换为扇形进度条模式。  
在此模式下前景图或前景色被裁剪为扇形。  
如果有背景色则被裁剪为圆角，背景图不裁剪。  
如果指定背景图、前景图,应设为 center 显示模式以使圆心对齐。  

- 参数 @min,@max 指定最小、最大进度值。  
- 可选参数 @cutoutPercentage 用于指定抠除的中心圆百分比（圆环效果）。  
@cutoutPercentage 可选指定 0~100 之间的数值。

### uiCtrlPlusObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="uiCtrlPlusObject.setPos" href="#uiCtrlPlusObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### uiCtrlPlusObject.setProgressRange <a id="uiCtrlPlusObject.setProgressRange" href="#uiCtrlPlusObject.setProgressRange">&#x23;</a>
设置进度条范围，并切换到进度条显示模式。  
如果宽大于高显示为水平进度条，高大于宽则显示为垂直进度条。  
调用了此函数将会强制使用expand显示模式  
水平进度条文本右对齐,垂直进度条文本上对齐时将限制文本输出于前景内部  
否则不改变文本输出位置  
可选用textPadding属性指定文本内边距

### uiCtrlPlusObject.setProgressRange(最小值,最大值) <a id="uiCtrlPlusObject.setProgressRange" href="#uiCtrlPlusObject.setProgressRange">&#x23;</a>
设置进度条范围。  
调用了此函数将会强制使用 expand 显示模式。  
如果在调用 startProgress,stepProgress 等方法或修改 progressPos 属性时  
尚未设置进度条范围，则会自动调用此函数并设置最小最大值为 0,100。

### uiCtrlPlusObject.setRect(rc) <a id="uiCtrlPlusObject.setRect" href="#uiCtrlPlusObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### uiCtrlPlusObject.setRect(rc,true) <a id="uiCtrlPlusObject.setRect" href="#uiCtrlPlusObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### uiCtrlPlusObject.setRedraw(false) <a id="uiCtrlPlusObject.setRedraw" href="#uiCtrlPlusObject.setRedraw">&#x23;</a>
禁止重绘

### uiCtrlPlusObject.setRedraw(true) <a id="uiCtrlPlusObject.setRedraw" href="#uiCtrlPlusObject.setRedraw">&#x23;</a>
恢复重绘

### uiCtrlPlusObject.setRepeat("模式",是否重绘) <a id="uiCtrlPlusObject.setRepeat" href="#uiCtrlPlusObject.setRepeat">&#x23;</a>
修改背景显示模式  
支持模式expand,stretch,center,tile,scale

### uiCtrlPlusObject.setTimeout(函数或代码,延时,其他附加参数) <a id="uiCtrlPlusObject.setTimeout" href="#uiCtrlPlusObject.setTimeout">&#x23;</a>
推迟执行指定的函数或代码  
此函数异步执行参数中指定的函数，不会阻塞当前代码继续执行，  
延时参数是可选参数，以毫秒为单位，默认为0毫秒  
可选用附加参数指定调用延时函数的实参  
返回值为定时器ID

### uiCtrlPlusObject.setTrackbarRange <a id="uiCtrlPlusObject.setTrackbarRange" href="#uiCtrlPlusObject.setTrackbarRange">&#x23;</a>
设置滑块范围，并切换到滑块显示模式。  
如果宽大于高显示为水平滑块，高大于宽则显示为垂直滑块。  
用户拖动滑块时触发 onPosChanged 事件，可用于获取当前位置

### uiCtrlPlusObject.setTrackbarRange(最小值,最大值) <a id="uiCtrlPlusObject.setTrackbarRange" href="#uiCtrlPlusObject.setTrackbarRange">&#x23;</a>
如果使用图像制作滑块控件,  
请将背景、前景图像设为九宫格拉伸的expand模式,  
使用前景切图在右侧或顶部预留滑块位置不拉伸,  
如果未指定前景图像,aardio将自动使用当前字体颜色绘制滑块按钮,  
同样通过前景切图预留滑块大小,边框圆角属性将作用于滑块按钮,  
前景色将用于绘制滑块左侧或底部,背景色将用于绘制滑块右侧或顶部,  
前景边距将同时限制背景前景色的大小，但不会作用于背景图像

### uiCtrlPlusObject.sgSorry(text,timeout) <a id="uiCtrlPlusObject.sgSorry" href="#uiCtrlPlusObject.sgSorry">&#x23;</a>
显示倒竖大拇指图标提示框。  
参数 @text 指定要显示的文本信息。  
可选使用参数 @timeout 指定延时自动关闭提示框的毫秒数。  
请先导入 win.dlg.message 库以安装此函数

### uiCtrlPlusObject.show(true) <a id="uiCtrlPlusObject.show" href="#uiCtrlPlusObject.show">&#x23;</a>
显示控件

### uiCtrlPlusObject.skin(styleTable,clone) <a id="uiCtrlPlusObject.skin" href="#uiCtrlPlusObject.skin">&#x23;</a>

```aardio
uiCtrlPlusObject.skin({  
	background = {  
		default = 0xFF007BFF;  
		hover = 0xFF2B89ED;  
		active = 0xFF0062CC;  
		disabled = 0xFFCCCCCC;  
	};  
	color={  
		default=0xFFFFFFFF;  
		disabled=0xFF6D6D6D		  
	};  
})/*配置 plus 控件在不同交互状态下的外观样式。  
skin 可作为方法调用，也可作为属性使用（读写当前外观方案）。  
用法请查看 plus 控件使用指南。*/
```

### uiCtrlPlusObject.smoothingMode <a id="uiCtrlPlusObject.smoothingMode" href="#uiCtrlPlusObject.smoothingMode">&#x23;</a>
绘图画布默认抗锯齿模式,  
默认值为_GdipSmoothingModeAntiAlias

### uiCtrlPlusObject.startAnimation <a id="uiCtrlPlusObject.startAnimation" href="#uiCtrlPlusObject.startAnimation">&#x23;</a>
启动动画定时器，立即运行一次动画并且定时继续运行动画。  
此函数负责定时调用 onAnimation 并且定时重绘控件外观。  
可选在控件的 onAnimation 动画事件函数中修改外观，  
或者在控件的 onDrawContent 等绘图事件函数中直接输出动画。

### uiCtrlPlusObject.startAnimation(interval,beginning,change,duration) <a id="uiCtrlPlusObject.startAnimation" href="#uiCtrlPlusObject.startAnimation">&#x23;</a>
创建动画，  
定时执行 onAnimation 动画事件回调函数并重绘控件。  
调用此函数后立即运行一次动画，然后定时运行动画。  
参数 @interval 指定动画时间间隔，以毫秒为单位。  
参数 @beginning 指定初始状态值，不指定则默认为 0。  
可选参数 @change 指定动画完成后的状态值。  
可选参数 @duration 指定动画持续时间  
除参数 @interval 以外的参数会传给 onAnimation 回调函数作为调用参数。

### uiCtrlPlusObject.startProgress() <a id="uiCtrlPlusObject.startProgress" href="#uiCtrlPlusObject.startProgress">&#x23;</a>
启动进度条动画,并显示进度条。  
如果尚未设置进度范围则会自动设置并切换到进度条模式。  
可选用参数 @1 指定间隔毫秒,可选用参数 @2 指定每次推进的进度。  
必须先调用 setProgressRange 函数事先指定进度范围。  
必须指定前景色、或前景图

### uiCtrlPlusObject.stepProgress <a id="uiCtrlPlusObject.stepProgress" href="#uiCtrlPlusObject.stepProgress">&#x23;</a>
增加进度条的值。

### uiCtrlPlusObject.stepProgress(步进单位,是否刷新) <a id="uiCtrlPlusObject.stepProgress" href="#uiCtrlPlusObject.stepProgress">&#x23;</a>
步进单位可以省略,默认为1  
参数@2可省略,默认为true  
进度条到尾部或头部则返回false,否则返回true

### uiCtrlPlusObject.stopAnimation() <a id="uiCtrlPlusObject.stopAnimation" href="#uiCtrlPlusObject.stopAnimation">&#x23;</a>
停止动画定时器

### uiCtrlPlusObject.stopProgress() <a id="uiCtrlPlusObject.stopProgress" href="#uiCtrlPlusObject.stopProgress">&#x23;</a>
停止进度条动画,并隐藏进度条

### uiCtrlPlusObject.stringFormatFlags <a id="uiCtrlPlusObject.stringFormatFlags" href="#uiCtrlPlusObject.stringFormatFlags">&#x23;</a>

```aardio
uiCtrlPlusObject.stringFormatFlags = _GdipStringFormatFlagsMeasureTrailingSpaces;
```

### uiCtrlPlusObject.tabNext() <a id="uiCtrlPlusObject.tabNext" href="#uiCtrlPlusObject.tabNext">&#x23;</a>
[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### uiCtrlPlusObject.tabNext(移动焦点,是否反向) <a id="uiCtrlPlusObject.tabNext" href="#uiCtrlPlusObject.tabNext">&#x23;</a>
获取下一个支持tab控制焦点的控件  
参数@1为true会自动移动焦点到该控件  
参数@2为true则获取上一个控件,否则获取下一个控件

### uiCtrlPlusObject.text <a id="uiCtrlPlusObject.text" href="#uiCtrlPlusObject.text">&#x23;</a>
控件文本

### uiCtrlPlusObject.textPadding <a id="uiCtrlPlusObject.textPadding" href="#uiCtrlPlusObject.textPadding">&#x23;</a>

```aardio
uiCtrlPlusObject.textPadding = {
	left = 0;
	top = 0;
	bottom = 0;
	right = 0;/*指定文本区输出内边距,在前景内边距上叠加,可以使用负数,仅对文本有效*/
}
```

### uiCtrlPlusObject.textRenderingHint <a id="uiCtrlPlusObject.textRenderingHint" href="#uiCtrlPlusObject.textRenderingHint">&#x23;</a>

```aardio
uiCtrlPlusObject.textRenderingHint = _GdipTextRenderingHint;
```

### uiCtrlPlusObject.theme <a id="uiCtrlPlusObject.theme" href="#uiCtrlPlusObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### uiCtrlPlusObject.threadCallable() <a id="uiCtrlPlusObject.threadCallable" href="#uiCtrlPlusObject.threadCallable">&#x23;</a>
开启此控件的跨线程调用功能

### uiCtrlPlusObject.toClient(x,y) <a id="uiCtrlPlusObject.toClient" href="#uiCtrlPlusObject.toClient">&#x23;</a>
将参数 x,y 指定的屏幕坐标转换为当前控件客户区坐标。  
返回 2 个值：x,y

### uiCtrlPlusObject.toScreen(x,y) <a id="uiCtrlPlusObject.toScreen" href="#uiCtrlPlusObject.toScreen">&#x23;</a>
将参数 x,y 指定的当前控件客户区坐标转换为屏幕坐标。  
返回 2 个值：x,y

### uiCtrlPlusObject.top <a id="uiCtrlPlusObject.top" href="#uiCtrlPlusObject.top">&#x23;</a>
顶部坐标

### uiCtrlPlusObject.translateAccelerator <a id="uiCtrlPlusObject.translateAccelerator" href="#uiCtrlPlusObject.translateAccelerator">&#x23;</a>

```aardio
uiCtrlPlusObject.translateAccelerator = function(msg){   
	/*返回是否快捷键*/  
}
```

### uiCtrlPlusObject.translateCommand() <a id="uiCtrlPlusObject.translateCommand" href="#uiCtrlPlusObject.translateCommand">&#x23;</a>
允许转发转发子窗口的命令（_WM_COMMAND）与通知（_WM_NOTIFY）消息，  
避免子窗口 oncommand，onnotify 等回调失效。  
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息，  
以避免部分外观属性失。  

启用嵌入编辑框功能时已自动调用此函数

### uiCtrlPlusObject.trimming <a id="uiCtrlPlusObject.trimming" href="#uiCtrlPlusObject.trimming">&#x23;</a>

```aardio
uiCtrlPlusObject.trimming = _GdipStringTrimming;
```

### uiCtrlPlusObject.tryCreateEmbed <a id="uiCtrlPlusObject.tryCreateEmbed" href="#uiCtrlPlusObject.tryCreateEmbed">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
容器对象的 _object 成员是创建的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象。  
通常使用 util.metaProperty 为容器对象添加属性元表，  
属性元表可拦截属性、函数调用并调用 _object 对象,  

createEmbedEx 返回的容器已添加默认代理以直接访问 COM 对象

### uiCtrlPlusObject.tryCreateEmbed() <a id="uiCtrlPlusObject.tryCreateEmbed" href="#uiCtrlPlusObject.tryCreateEmbed">&#x23;</a>
[返回对象:embedObject](https://www.aardio.com/zh-cn/doc/library-reference/com/_.html#embedObject)

### uiCtrlPlusObject.tryCreateEmbed(clsId,embedObj) <a id="uiCtrlPlusObject.tryCreateEmbed" href="#uiCtrlPlusObject.tryCreateEmbed">&#x23;</a>
创建嵌入控件,返回控件容器对象,  
容器对象的 _object 成员是创建的 COM 对象,  
容器对象可通过添加成员函数响应 COM 对象事件，  
容器对象的主要作用是充当访问 COM 对象的中间代理对象,  
@clsId 指定控件 CLSID,  
可选在参数@2中指定 COM 对象绑定的容器对象  

成功返回容器对象,失败返回false,错误信息

### uiCtrlPlusObject.update() <a id="uiCtrlPlusObject.update" href="#uiCtrlPlusObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### uiCtrlPlusObject.valid <a id="uiCtrlPlusObject.valid" href="#uiCtrlPlusObject.valid">&#x23;</a>
窗口是否有效，  
窗口未关闭返回 true ，  
窗口已关闭或正在关闭返回 false

### uiCtrlPlusObject.valign <a id="uiCtrlPlusObject.valign" href="#uiCtrlPlusObject.valign">&#x23;</a>
文本垂直对齐,  
顶对齐："top"  
居中："center"  
底对齐："bottom"  

图标文本对齐请使用 iconStyle 属性的 align 字段指定垂直对齐

### uiCtrlPlusObject.value <a id="uiCtrlPlusObject.value" href="#uiCtrlPlusObject.value">&#x23;</a>
控件文本，text 属性的别名。

### uiCtrlPlusObject.width <a id="uiCtrlPlusObject.width" href="#uiCtrlPlusObject.width">&#x23;</a>
宽度

### uiCtrlPlusObject.x <a id="uiCtrlPlusObject.x" href="#uiCtrlPlusObject.x">&#x23;</a>
前景x坐标,仅用于point绘图模式,  
1、0到1之间的小数表示百分比，负数表示右侧反向坐标

### uiCtrlPlusObject.y <a id="uiCtrlPlusObject.y" href="#uiCtrlPlusObject.y">&#x23;</a>
前景y坐标,仅用于point绘图模式,  
1、0到1之间的小数表示百分比，负数表示底部反向坐标

## uiCtrlPlusObject 事件列表 <a id="uiCtrlPlusObjectEvent" href="#uiCtrlPlusObjectEvent">&#x23;</a>

### uiCtrlPlusObject.onAnimation(state,beginning,change,timestamp,duration) <a id="uiCtrlPlusObject.onAnimation" href="#uiCtrlPlusObject.onAnimation">&#x23;</a>

```aardio
uiCtrlPlusObject.onAnimation = function(state,beginning,change,timestamp,duration){
    /*startAnimation 函数启动的动画将定时回调此函数。  
参数 @state 是上次返回的值。  
可以使用 plus 控件的 animationState 属性获取 @state 最新的值。  
参数 @timestamp 为动画已执行的时间  
其他参数为调用 startAnimation 指定的参数,  
返回值恒等于 null 则停止动画，返回其他值继续执行动画。*/
	return state;
}
```

### uiCtrlPlusObject.onContextMenu <a id="uiCtrlPlusObject.onContextMenu" href="#uiCtrlPlusObject.onContextMenu">&#x23;</a>

```aardio
uiCtrlPlusObject.onContextMenu = function(x,y){ 
	/*请求显示右键菜单（单击鼠标右键、菜单键或按下 Shift+F10。  
参数 x,y 为鼠标当前所在的屏幕坐标*/
}
```

### uiCtrlPlusObject.onDrawBackground <a id="uiCtrlPlusObject.onDrawBackground" href="#uiCtrlPlusObject.onDrawBackground">&#x23;</a>

```aardio
uiCtrlPlusObject.onDrawBackground = function(graphics,rc,backgroundColor,foregroundColor){
	/*自绘背景,  
graphics 为gdip.graphics对象(GDI+画板),  
rc为绘图区块,  
bkColor为当前状态背景色,AGGB格式,可能为null  
foreColor为当前状态前景色,ARGB格式,不会出现null值  
返回真取消默认的背景绘图*/
}
```

### uiCtrlPlusObject.onDrawContent <a id="uiCtrlPlusObject.onDrawContent" href="#uiCtrlPlusObject.onDrawContent">&#x23;</a>

```aardio
uiCtrlPlusObject.onDrawContent = function(graphics,rc,txtColor,rcContent,foregroundColor,font){
	/*自绘前景,  
graphics 为gdip.graphics对象（GDI+画板）,  
txtColor 为文本色,ARGB 格式（0xAARRGGBB）数值,  
foreColor 为当前状态前景色,ARGB 格式数值,  
rc为客户区RECT结构体,rcContent为去掉内边距后的 RECT 结构体,  
返回真则取消绘制默认前景的操作（包含进度条、滑块等涉及前景绘制的操作）。*/
}
```

### uiCtrlPlusObject.onDrawEnd <a id="uiCtrlPlusObject.onDrawEnd" href="#uiCtrlPlusObject.onDrawEnd">&#x23;</a>

```aardio
uiCtrlPlusObject.onDrawEnd = function(graphics,rc,bmpMem){
	/*所有绘制操作结束触发此事件,  
graphics 为gdip.graphics对象(GDI+画板),  
rc 为客户区RECT结构体,  
bmpMem 为当前正在绘制的 gdip.bitmap 对象，  
要注意此函数退出后不可继续使用 bmpMem，  
可使用 bmpMem.clone,bmpMem.copy,bmpMem.getThumbnail 等复制图像*/
}
```

### uiCtrlPlusObject.onDrawForegroundEnd <a id="uiCtrlPlusObject.onDrawForegroundEnd" href="#uiCtrlPlusObject.onDrawForegroundEnd">&#x23;</a>

```aardio
uiCtrlPlusObject.onDrawForegroundEnd = function(graphics,rc,rcContent){
	/*背景前景绘制后,绘制文本前触发此事件,  
graphics 为gdip.graphics对象(GDI+画板),  
rc为客户区RECT结构体,rcContent为去掉内边距后的RECT结构体*/
}
```

### uiCtrlPlusObject.onDrawString <a id="uiCtrlPlusObject.onDrawString" href="#uiCtrlPlusObject.onDrawString">&#x23;</a>

```aardio
uiCtrlPlusObject.onDrawString = function(graphics,text,font,rectf,strformat,brush){
    /*自定义输出文本,请不要删除传入参数中的GDI+对象*/
    graphics.drawString(text,font,rectf,strformat,brush);
}
```

### uiCtrlPlusObject.onDropFiles <a id="uiCtrlPlusObject.onDropFiles" href="#uiCtrlPlusObject.onDropFiles">&#x23;</a>

```aardio
uiCtrlPlusObject.onDropFiles = function(files){  
	/*接受系统拖放,files是拖放的所有文件路径名数组,嵌入编辑框必须是edit控件,richedit*/  
}
```

### uiCtrlPlusObject.onFocusGot(hLostFocus) <a id="uiCtrlPlusObject.onFocusGot" href="#uiCtrlPlusObject.onFocusGot">&#x23;</a>

```aardio
uiCtrlPlusObject.onFocusGot = function(hLostFocus){
	..win.setFocus(hLostFocus);/*得到焦点触发此事件,hLostFocus为失去焦点的窗口句柄,  
如果在这里将hLostFocus恢复焦点,则阻止当前窗口得到焦点*/
}
```

### uiCtrlPlusObject.onFocusLost(hFocus) <a id="uiCtrlPlusObject.onFocusLost" href="#uiCtrlPlusObject.onFocusLost">&#x23;</a>

```aardio
uiCtrlPlusObject.onFocusLost = function(hFocus){
	/*失去焦点触发此事件,hFocus为得到焦点的窗口句柄*/
}
```

### uiCtrlPlusObject.onGetDlgCode <a id="uiCtrlPlusObject.onGetDlgCode" href="#uiCtrlPlusObject.onGetDlgCode">&#x23;</a>

```aardio
uiCtrlPlusObject.onGetDlgCode = function(keyCode,pMsg){
	return _DLGC_/*自定义收到 _WM_GETDLGCODE 查询消息的响应代码。  
返回值可以是一个或多个 _DLGC_ 前缀常量的组合。  
例如可以返回 4/*_DLGC_WANTALLKEYS*/ 以允许控件处理所有按键消息。  
如果未定义 onGetDlgCode 函数则会返回 dlgCode 属性指定的代码。  
如果也未指定 dlgCode 属性则根据 notify 属性自动选择返回代码。  
仅 plus 控件支持此事件。 */;
}
```

### uiCtrlPlusObject.onKeyDown <a id="uiCtrlPlusObject.onKeyDown" href="#uiCtrlPlusObject.onKeyDown">&#x23;</a>

```aardio
uiCtrlPlusObject.onKeyDown = function(keyCode,lParam,repeat){
	/*按下键盘键*/
}
```

### uiCtrlPlusObject.onKeyUp <a id="uiCtrlPlusObject.onKeyUp" href="#uiCtrlPlusObject.onKeyUp">&#x23;</a>

```aardio
uiCtrlPlusObject.onKeyUp = function(keyCode,lParam){
	/*放开键盘键*/
}
```

### uiCtrlPlusObject.onMiddleMouseDown <a id="uiCtrlPlusObject.onMiddleMouseDown" href="#uiCtrlPlusObject.onMiddleMouseDown">&#x23;</a>

```aardio
uiCtrlPlusObject.onMiddleMouseDown = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标中键按下*/
}
```

### uiCtrlPlusObject.onMiddleMouseUp <a id="uiCtrlPlusObject.onMiddleMouseUp" href="#uiCtrlPlusObject.onMiddleMouseUp">&#x23;</a>

```aardio
uiCtrlPlusObject.onMiddleMouseUp = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标中键弹起*/
}
```

### uiCtrlPlusObject.onMouseActivate <a id="uiCtrlPlusObject.onMouseActivate" href="#uiCtrlPlusObject.onMouseActivate">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseActivate = function(hwndTop,hitTest,message){  
	return _MA_/*鼠标点击并且将要激活窗口时触发此事件  
hwndTop表示被激活的顶层窗口,  
hitTest参数请参考WM_NCHITTEST消息  
message为鼠标消息ID  
返回值的作用请参数MSDN*/  
}
```

### uiCtrlPlusObject.onMouseClick <a id="uiCtrlPlusObject.onMouseClick" href="#uiCtrlPlusObject.onMouseClick">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseClick = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标左键在控件上单击,  
orphanWindow模式下如果阻止控件得到焦点,此事件不会被触发*/
}
```

### uiCtrlPlusObject.onMouseDoubleClick <a id="uiCtrlPlusObject.onMouseDoubleClick" href="#uiCtrlPlusObject.onMouseDoubleClick">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseDoubleClick = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标左键双击*/
}
```

### uiCtrlPlusObject.onMouseDown <a id="uiCtrlPlusObject.onMouseDown" href="#uiCtrlPlusObject.onMouseDown">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseDown = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标左键按下,  
orphanWindow模式下如果阻止控件得到焦点,此事件不会被触发*/
}
```

### uiCtrlPlusObject.onMouseDrag <a id="uiCtrlPlusObject.onMouseDrag" href="#uiCtrlPlusObject.onMouseDrag">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseDrag = function(wParam,lParam){
	/*鼠标左键按下拖动,  
自动捕获鼠标,允许拖出控件范围*/
}
```

```aardio
uiCtrlPlusObject.onMouseDrag = function(wParam,lParam){ 
    var x,y = win.getMessagePos(lParam);
	/*鼠标左键按下拖动,  
自动捕获鼠标,允许拖出控件范围*/ 
}
```

### uiCtrlPlusObject.onMouseEnter <a id="uiCtrlPlusObject.onMouseEnter" href="#uiCtrlPlusObject.onMouseEnter">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseEnter = function(wParam,lParam){
	/*鼠标移入*/
}
```

### uiCtrlPlusObject.onMouseHWheel <a id="uiCtrlPlusObject.onMouseHWheel" href="#uiCtrlPlusObject.onMouseHWheel">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseHWheel = function(flags,delta,lParam){
    delta = -delta/(120/3); 
	/*水平滚动鼠标滚轮,flags 参数以 _MK_CONTROL 等常量表示按键*/
}
```

### uiCtrlPlusObject.onMouseHover <a id="uiCtrlPlusObject.onMouseHover" href="#uiCtrlPlusObject.onMouseHover">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseHover = function(wParam,lParam){
	/*鼠标悬停*/
}
```

### uiCtrlPlusObject.onMouseLeave <a id="uiCtrlPlusObject.onMouseLeave" href="#uiCtrlPlusObject.onMouseLeave">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseLeave = function(wParam,lParam){
	/*鼠标移出*/
}
```

### uiCtrlPlusObject.onMouseMove <a id="uiCtrlPlusObject.onMouseMove" href="#uiCtrlPlusObject.onMouseMove">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseMove = function(wParam,lParam){
	if( wParam & 0x1/*_MK_LBUTTON*/ ){
		var x,y = win.getMessagePos(lParam);
		/*鼠标移动*/
	}
}
```

### uiCtrlPlusObject.onMouseUp <a id="uiCtrlPlusObject.onMouseUp" href="#uiCtrlPlusObject.onMouseUp">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseUp = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标左键弹起*/
}
```

### uiCtrlPlusObject.onMouseWheel <a id="uiCtrlPlusObject.onMouseWheel" href="#uiCtrlPlusObject.onMouseWheel">&#x23;</a>

```aardio
uiCtrlPlusObject.onMouseWheel = function(flags,delta,lParam){
    delta = delta/(120/3); 
	/*滚动鼠标滚轮,flags 参数以 _MK_CONTROL 等常量表示按键*/
}
```

### uiCtrlPlusObject.onPosChanged <a id="uiCtrlPlusObject.onPosChanged" href="#uiCtrlPlusObject.onPosChanged">&#x23;</a>

```aardio
uiCtrlPlusObject.onPosChanged = function( pos,triggeredByUser ){
	/*进度值变更,pos 参数为当前进度数值,  
如果此事件由用户拖动滑块或按键盘方向键触发,则 triggeredByUser 参数为 true*/
}
```

### uiCtrlPlusObject.onRightMouseDown <a id="uiCtrlPlusObject.onRightMouseDown" href="#uiCtrlPlusObject.onRightMouseDown">&#x23;</a>

```aardio
uiCtrlPlusObject.onRightMouseDown = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标右键按下*/
}
```

### uiCtrlPlusObject.onRightMouseUp <a id="uiCtrlPlusObject.onRightMouseUp" href="#uiCtrlPlusObject.onRightMouseUp">&#x23;</a>

```aardio
uiCtrlPlusObject.onRightMouseUp = function(wParam,lParam){
    var x,y = win.getMessagePos(lParam);
	/*鼠标右键弹起*/
}
```

### uiCtrlPlusObject.onSelectChange <a id="uiCtrlPlusObject.onSelectChange" href="#uiCtrlPlusObject.onSelectChange">&#x23;</a>

```aardio
uiCtrlPlusObject.onSelectChange = function(prev,current){
	/*单选模式下已选中当前控件,prev 为同一分组之前选中的控件。  
同一分组之前没有选中控件时 prev 为 null 。  
current 为当前选中控件。*/
}
```

### uiCtrlPlusObject.onSize <a id="uiCtrlPlusObject.onSize" href="#uiCtrlPlusObject.onSize">&#x23;</a>

```aardio
uiCtrlPlusObject.onSize = function( width,height,wParam ) {	   
	/*父窗口改变大小后会自动触发此事件函数。  
注意 onSize 是 adjust 事件的别名，作用相同  
所有 win.form 创建的窗体和控件都支持 onSize（或 adjust）事件,  
重复赋值 onSize（或 adjust）会追加事件触发器而非替换原来的值。  

width 参数为窗口客户区宽度,height 参数为窗口客户区高度,  
wParam 参数来自 _WM_SIZE 消息的 wParam 参数，一般不用管。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息，  
定义 onSize 事件是更好的选择。  

};*/
```

### uiCtrlPlusObject.onStateChange <a id="uiCtrlPlusObject.onStateChange" href="#uiCtrlPlusObject.onStateChange">&#x23;</a>

```aardio
uiCtrlPlusObject.onStateChange = function(state){
	/*状态已改变*/
}
```

### uiCtrlPlusObject.onSysKeyDown <a id="uiCtrlPlusObject.onSysKeyDown" href="#uiCtrlPlusObject.onSysKeyDown">&#x23;</a>

```aardio
uiCtrlPlusObject.onSysKeyDown = function(keyCode,lParam,repeat){
	if(keyCode!=0x12/*_VK_ALT*/){
		/*按下键盘ALT组合键*/		
	}
}
```

### uiCtrlPlusObject.onSysKeyUp <a id="uiCtrlPlusObject.onSysKeyUp" href="#uiCtrlPlusObject.onSysKeyUp">&#x23;</a>

```aardio
uiCtrlPlusObject.onSysKeyUp = function(keyCode,lParam){
	/*放开键盘键*/
}
```

## uiCtrlPlusObject.state 成员列表 <a id="uiCtrlPlusObject.state" href="#uiCtrlPlusObject.state">&#x23;</a>

### uiCtrlPlusObject.state.active <a id="uiCtrlPlusObject.state.active" href="#uiCtrlPlusObject.state.active">&#x23;</a>
鼠标或键盘键按下状态  
注意直接修改该状态控件不负责重绘

### uiCtrlPlusObject.state.checked <a id="uiCtrlPlusObject.state.checked" href="#uiCtrlPlusObject.state.checked">&#x23;</a>
是否选中状态  
注意直接修改该状态控件不负责重绘

### uiCtrlPlusObject.state.disabled <a id="uiCtrlPlusObject.state.disabled" href="#uiCtrlPlusObject.state.disabled">&#x23;</a>
已禁用  
注意直接修改该状态控件不负责重绘

### uiCtrlPlusObject.state.dragging <a id="uiCtrlPlusObject.state.dragging" href="#uiCtrlPlusObject.state.dragging">&#x23;</a>
是否按下鼠标且正在拖动

### uiCtrlPlusObject.state.focus <a id="uiCtrlPlusObject.state.focus" href="#uiCtrlPlusObject.state.focus">&#x23;</a>
是否已得到焦点  
注意直接修改该状态控件不负责重绘

### uiCtrlPlusObject.state.hover <a id="uiCtrlPlusObject.state.hover" href="#uiCtrlPlusObject.state.hover">&#x23;</a>
鼠标是否在控件上方  
注意直接修改该状态控件不负责重绘

## win.ui.ctrl.plus 成员列表 <a id="win.ui.ctrl.plus" href="#win.ui.ctrl.plus">&#x23;</a>

高级图像控件

### win.ui.ctrl.plus.progressColors <a id="win.ui.ctrl.plus.progressColors" href="#win.ui.ctrl.plus.progressColors">&#x23;</a>
进度条与滑尺的预设配色方案，这是一个 ARGB 格式颜色值数组。
