# win.ui.ctrl.button 库模块帮助文档

## win.ui.ctrl 成员列表 <a id="win.ui.ctrl" href="#win.ui.ctrl">&#x23;</a>

### win.ui.ctrl.button() <a id="win.ui.ctrl.button" href="#win.ui.ctrl.button">&#x23;</a>
控钮控件  
checkbox.radiobutton 等控件继承自 button 控件,  
button 控件默认会忽略背景色、字体颜色属性,  
在创建参数中指定 note 属性时会切换为「命令链接」样式  

[返回对象:buttonObject](#buttonObject)

### win.ui.ctrl.checkbox() <a id="win.ui.ctrl.checkbox" href="#win.ui.ctrl.checkbox">&#x23;</a>
复选控钮控件  

[返回对象:checkboxObject](#checkboxObject)

### win.ui.ctrl.groupbox() <a id="win.ui.ctrl.groupbox" href="#win.ui.ctrl.groupbox">&#x23;</a>
控钮控件  

[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### win.ui.ctrl.radio() <a id="win.ui.ctrl.radio" href="#win.ui.ctrl.radio">&#x23;</a>
单选控钮控。  
等价于 win.ui.ctrl.radiobutton 。件  

[返回对象:radiobuttonObject](#radiobuttonObject)

### win.ui.ctrl.radiobutton() <a id="win.ui.ctrl.radiobutton" href="#win.ui.ctrl.radiobutton">&#x23;</a>
单选控钮控件。  
等价于 win.ui.ctrl.radio 。  

[返回对象:radiobuttonObject](#radiobuttonObject)

## buttonObject 成员列表 <a id="buttonObject" href="#buttonObject">&#x23;</a>

### buttonObject._defWindowProc(hwnd,message,wParam,lParam) <a id="buttonObject._defWindowProc" href="#buttonObject._defWindowProc">&#x23;</a>
用于在 wndproc 回调中提前调用默认消息回调函数,  
所有窗口和控件定义了 wndproc 回调以后会自动创建这个函数,  
调用此函数以后,wndproc 必须指定非 null 返回值,  
以避免再次重复调用默认回调函数

### buttonObject._parentForm <a id="buttonObject._parentForm" href="#buttonObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/_.html#winform)

### buttonObject.addCtrl() <a id="buttonObject.addCtrl" href="#buttonObject.addCtrl">&#x23;</a>
[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### buttonObject.addCtrl(controlsPropertiesTable) <a id="buttonObject.addCtrl" href="#buttonObject.addCtrl">&#x23;</a>

```aardio
buttonObject.addCtrl(  
	cls="button";marginRight=2;marginTop=1;marginBottom=4;width=16;text="4";font=LOGFONT(charset=2;name='Marlett';weight=500);  
	oncommand = function(id,event){   
		owner.msgbox(owner.text)  
	}  
)/*在 button 控件窗口内添加子窗口*/
```

### buttonObject.bottom <a id="buttonObject.bottom" href="#buttonObject.bottom">&#x23;</a>
底部坐标

### buttonObject.busy() <a id="buttonObject.busy" href="#buttonObject.busy">&#x23;</a>
控件当前是否被禁用或正在播放单例动画。  
仅通过 reduce 方法、disabledText 属性启动的单例动画会改变此函数的返回值。  
此函数返回 true 通常表示控件相关的操作处于“忙碌”状态。  

所有控件都有此方法，但通常仅对于启动耗时任务的按钮有实际意义，  
因此并非所有控件文档包含此方法说明

### buttonObject.capture <a id="buttonObject.capture" href="#buttonObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### buttonObject.className <a id="buttonObject.className" href="#buttonObject.className">&#x23;</a>
运行时类名

### buttonObject.click() <a id="buttonObject.click" href="#buttonObject.click">&#x23;</a>
模拟用户点击控件发送单击消息。

### buttonObject.close() <a id="buttonObject.close" href="#buttonObject.close">&#x23;</a>
关闭控件窗口

### buttonObject.cls <a id="buttonObject.cls" href="#buttonObject.cls">&#x23;</a>
设计时类名

### buttonObject.disabled <a id="buttonObject.disabled" href="#buttonObject.disabled">&#x23;</a>
是否禁用

### buttonObject.disabledText <a id="buttonObject.disabledText" href="#buttonObject.disabledText">&#x23;</a>

```aardio
buttonObject.disabledText = ["✶","✸","✹","✺","✹","✷"]/*disabledText 属性指定为文本时，禁用此控件并显示指定文本。  
指定为数组时,创建动画并在原控件文本前面循环显示数组中的字符图标。  
数组内可选添加一个 text 字段指定按钮禁用状态显示的文本。  
disabledText 属性指定为 null 时，启用此控件并恢复控件之前的正常文本。*/
```

### buttonObject.dpiScaleX <a id="buttonObject.dpiScaleX" href="#buttonObject.dpiScaleX">&#x23;</a>
窗口当前使用的DPI横坐标缩放系数,  
该值由界面系统自动维护，任何情况下都不应手动修改,  

这是一个以小数表示百分比的数，例如 1.25 表示 125%,  
窗口未使用缩放或未完成缩放初始化时，值可能为 null，  
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数

### buttonObject.dpiScaleY <a id="buttonObject.dpiScaleY" href="#buttonObject.dpiScaleY">&#x23;</a>
窗口当前使用的DPI纵坐标缩放系数,  
该值由界面系统自动维护，任何情况下都不应手动修改,  

这是一个以小数表示百分比的数，例如 1.25 表示 125%,  
窗口未使用缩放或未完成缩放初始化时，值可能为 null，  
如果要获取屏幕缩放设置应改用 gdi.getDpiScale 函数

### buttonObject.font <a id="buttonObject.font" href="#buttonObject.font">&#x23;</a>
控件字体（LOGFONT 结构体），  
注意获取该属性总是返回新的 LOGFONT 对象，  
修改返回字体并不会更新控件字体，  
除非重新赋值。  

建议尽量优先使用 getFont 或 setFont 函数，  
以增强代码可读性  

字体会根据控件设置自动处理 DPI 缩放，不需要事先缩放字体大小

### buttonObject.getClientRect() <a id="buttonObject.getClientRect" href="#buttonObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/docs/library-reference/global/_.html#rectObject)

### buttonObject.getFont() <a id="buttonObject.getFont" href="#buttonObject.getFont">&#x23;</a>
返回控件 LOGFONT 字体，  
返回对象的 h 值会按控件的 DPI 缩放设置自动还原为缩放前大小。  

[返回对象:logfontObject](#logfontObject)

### buttonObject.getFont(true) <a id="buttonObject.getFont" href="#buttonObject.getFont">&#x23;</a>
返回控件 LOGFONT 字体，  
返回对象的 h 值为字体实际大小，不会按控件 DPI 设置还原。  
返回字体会设置 noScale 属性为 true,  
使用控件的 setFont 函数或赋值 font 属性时，  
noScale 属性为 true 的字体同样不会进行自动 DPI 缩放  

[返回对象:logfontObject](#logfontObject)

### buttonObject.getParent() <a id="buttonObject.getParent" href="#buttonObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### buttonObject.getPos() <a id="buttonObject.getPos" href="#buttonObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### buttonObject.getRect() <a id="buttonObject.getRect" href="#buttonObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### buttonObject.getRect(true) <a id="buttonObject.getRect" href="#buttonObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### buttonObject.height <a id="buttonObject.height" href="#buttonObject.height">&#x23;</a>
高度

### buttonObject.hwnd <a id="buttonObject.hwnd" href="#buttonObject.hwnd">&#x23;</a>
控件句柄

### buttonObject.id <a id="buttonObject.id" href="#buttonObject.id">&#x23;</a>
控件ID

### buttonObject.image <a id="buttonObject.image" href="#buttonObject.image">&#x23;</a>
按钮图片或图标  
赋值必须是图片文件路径或数据  
位图句柄由窗体负责销毁  
取值时返回位图句柄

### buttonObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="buttonObject.invalidate(/*可选使用::RECT" href="#buttonObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### buttonObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="buttonObject.invalidate(/*可选使用::RECT" href="#buttonObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### buttonObject.left <a id="buttonObject.left" href="#buttonObject.left">&#x23;</a>
左侧坐标

### buttonObject.modifyStyle(remove,add,swpFlags) <a id="buttonObject.modifyStyle" href="#buttonObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### buttonObject.modifyStyleEx(remove,add,swpFlags) <a id="buttonObject.modifyStyleEx" href="#buttonObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### buttonObject.note <a id="buttonObject.note" href="#buttonObject.note">&#x23;</a>
设置按钮附注  
必须在创建控件的初始化参数中也指定该属性,  

指定该属性会切换为「命令链接」样式,  
支持Vista,Win7 以及之后的系统,不支持 XP 系统  
「命令链接」样式忽略控件的字体设置，但支持背景色属性

### buttonObject.orphanWindow(transparent,hwndBuddy,borderless) <a id="buttonObject.orphanWindow" href="#buttonObject.orphanWindow">&#x23;</a>
创建悬浮窗口。  
悬浮窗口是模仿子窗口外观效果的独立窗口，父窗口可自动调整子窗口到设定位置。  
可选参数 @transparent 为 true 则转换为分层透明窗口。  
可选利用 @hwndBuddy 参数指定外部进程窗口句柄的并附加在内部控件上以实现相同的效果。  
伙伴窗口总是会保持在悬浮窗口前面，并保持相同的大小、位置。  
可重复调用此函数更换伙伴窗口，旧的伙伴窗口必须自行关闭。  
可选指定 @borderless 参数 为 true 以移除 @hwndBuddy  的窗口边框。

### buttonObject.postMessage(msg,wParam,lParam) <a id="buttonObject.postMessage" href="#buttonObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### buttonObject.publish("字符串参数",) <a id="buttonObject.publish" href="#buttonObject.publish">&#x23;</a>
在窗口所在界面线程发布消息,  
运行界面线程所有所有调用subscribe函数订阅此消息的函数,  
可添加任意个触发参数

### buttonObject.redraw() <a id="buttonObject.redraw" href="#buttonObject.redraw">&#x23;</a>
刷新

### buttonObject.reloadScale() <a id="buttonObject.reloadScale" href="#buttonObject.reloadScale">&#x23;</a>
按设计时位置参数、重新调整控件位置以适应窗口当前缩放比例。  
父窗口缩放时会自动执行此操作。  
默认在启动窗口消息循环时会自适应调整所有控件。  
所以在启动消息循环前添加控件不必调用此函数。

### buttonObject.right <a id="buttonObject.right" href="#buttonObject.right">&#x23;</a>
右侧坐标

### buttonObject.saveScale() <a id="buttonObject.saveScale" href="#buttonObject.saveScale">&#x23;</a>
根据控件当前位置、缩放比例，更新控件的设计时位置参数。  
以避免下次窗口缩放自适应调整控件当前位置更改被清除，  
控件所有调整位置的属性或成员函数已自动调用此函数。

### buttonObject.sendMessage(msg,wParam,lParam) <a id="buttonObject.sendMessage" href="#buttonObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### buttonObject.setFocus() <a id="buttonObject.setFocus" href="#buttonObject.setFocus">&#x23;</a>
设置焦点

### buttonObject.setFont(指定字体) <a id="buttonObject.setFont" href="#buttonObject.setFont">&#x23;</a>
指定 LOGFONT 字体对象,或逻辑字体句柄  
如果不指定 point 值并指定 h 值，字体会按控件的 DPI 缩放设置自动缩放。

### buttonObject.setFont(混入字体属性) <a id="buttonObject.setFont" href="#buttonObject.setFont">&#x23;</a>

```aardio
buttonObject.setFont(h=-12;name="Tahoma");
```

### buttonObject.setIcon(图标句柄) <a id="buttonObject.setIcon" href="#buttonObject.setIcon">&#x23;</a>
设置图标  
成功返回true,自动销毁原来的位图

### buttonObject.setIcon(图标句柄,false) <a id="buttonObject.setIcon" href="#buttonObject.setIcon">&#x23;</a>
设置图标  
成功返回控件原来的位图句柄,  
必须调用::DeleteObject()函数销毁该句柄

### buttonObject.setImage(图片句柄) <a id="buttonObject.setImage" href="#buttonObject.setImage">&#x23;</a>
设置图片  
成功返回true,自动销毁原来的位图

### buttonObject.setImage(图片句柄,false) <a id="buttonObject.setImage" href="#buttonObject.setImage">&#x23;</a>
设置图片  
成功返回控件原来的位图句柄,  
必须调用::DeleteObject()函数销毁该句柄

### buttonObject.setParent(控件对象) <a id="buttonObject.setParent" href="#buttonObject.setParent">&#x23;</a>
改变父窗口

### buttonObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="buttonObject.setPos" href="#buttonObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### buttonObject.setRect(rc) <a id="buttonObject.setRect" href="#buttonObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### buttonObject.setRect(rc,true) <a id="buttonObject.setRect" href="#buttonObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### buttonObject.show(true) <a id="buttonObject.show" href="#buttonObject.show">&#x23;</a>
显示控件

### buttonObject.text <a id="buttonObject.text" href="#buttonObject.text">&#x23;</a>
按钮文本属性

### buttonObject.theme <a id="buttonObject.theme" href="#buttonObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### buttonObject.threadCallable() <a id="buttonObject.threadCallable" href="#buttonObject.threadCallable">&#x23;</a>
开启此控件的跨线程调用功能

### buttonObject.top <a id="buttonObject.top" href="#buttonObject.top">&#x23;</a>
顶部坐标

### buttonObject.translateCommand() <a id="buttonObject.translateCommand" href="#buttonObject.translateCommand">&#x23;</a>
允许转发转发子窗口的命令（_WM_COMMAND）与通知（_WM_NOTIFY）消息，  
避免子窗口 oncommand，onnotify 等回调失效。  
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息，  
以避免部分外观属性失效

### buttonObject.update() <a id="buttonObject.update" href="#buttonObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### buttonObject.valid <a id="buttonObject.valid" href="#buttonObject.valid">&#x23;</a>
窗口是否有效，  
窗口未关闭返回 true ，  
窗口已关闭或正在关闭返回 false

### buttonObject.visible <a id="buttonObject.visible" href="#buttonObject.visible">&#x23;</a>
当前控件窗口是否显示。  
仅检查当前窗口的可见性样式（窗口 是否具有 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。

### buttonObject.width <a id="buttonObject.width" href="#buttonObject.width">&#x23;</a>
宽度

## buttonObject 事件列表 <a id="buttonObjectEvent" href="#buttonObjectEvent">&#x23;</a>

### buttonObject.onDrawItem(drawItem,dpiScaleX,dpiScaleY) <a id="buttonObject.onDrawItem" href="#buttonObject.onDrawItem">&#x23;</a>

```aardio
buttonObject.onDrawItem = function(drawItem){
	/*控件属性里指定 ownerDraw 为 true 触发此事件  
在这里自绘控件项*/	
}
```

### buttonObject.onKeyDown <a id="buttonObject.onKeyDown" href="#buttonObject.onKeyDown">&#x23;</a>

```aardio
buttonObject.onKeyDown = function(keyCode,lParam,repeat){
	/*按下键盘键回调此函数  
keyCode 虚拟键码  
lParam 为 _WM_KEYDOWN 消息回调参数  
repeat 为是否连续按键  

如果需要支持更多按键与鼠标事件，请改用 win.ui.tracker*/
}
```

### buttonObject.onKeyUp <a id="buttonObject.onKeyUp" href="#buttonObject.onKeyUp">&#x23;</a>

```aardio
buttonObject.onKeyUp = function(keyCode,lParam){
	/*放开键盘键回调此函数  
keyCode 虚拟键码  
lParam 为 _WM_KEYUP 消息回调参数  

如果需要支持更多按键与鼠标事件，请改用 win.ui.tracker*/
}
```

### buttonObject.onMeasureItem(measureItem,dpiScaleX,dpiScaleY) <a id="buttonObject.onMeasureItem" href="#buttonObject.onMeasureItem">&#x23;</a>

```aardio
buttonObject.onMeasureItem = function(measureItem){
	measureItem.itemHeight = 51;  
	/*控件属性里指定 ownerDraw 为 true 触发此事件  
在这里配置自绘控件项参数*/
}
```

## checkboxObject 成员列表 <a id="checkboxObject" href="#checkboxObject">&#x23;</a>

### checkboxObject._defWindowProc(hwnd,message,wParam,lParam) <a id="checkboxObject._defWindowProc" href="#checkboxObject._defWindowProc">&#x23;</a>
用于在 wndproc 回调中提前调用默认消息回调函数,  
所有窗口和控件定义了 wndproc 回调以后会自动创建这个函数,  
调用此函数以后,wndproc 必须指定非 null 返回值,  
以避免再次重复调用默认回调函数

### checkboxObject._parentForm <a id="checkboxObject._parentForm" href="#checkboxObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/_.html#winform)

### checkboxObject.bottom <a id="checkboxObject.bottom" href="#checkboxObject.bottom">&#x23;</a>
底部坐标

### checkboxObject.capture <a id="checkboxObject.capture" href="#checkboxObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### checkboxObject.checked <a id="checkboxObject.checked" href="#checkboxObject.checked">&#x23;</a>
复选框是否选中状态

### checkboxObject.click() <a id="checkboxObject.click" href="#checkboxObject.click">&#x23;</a>
模拟用户点击控件发送单击消息。

### checkboxObject.close() <a id="checkboxObject.close" href="#checkboxObject.close">&#x23;</a>
关闭控件窗口

### checkboxObject.disabled <a id="checkboxObject.disabled" href="#checkboxObject.disabled">&#x23;</a>
是否禁用

### checkboxObject.getClientRect() <a id="checkboxObject.getClientRect" href="#checkboxObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/docs/library-reference/global/_.html#rectObject)

### checkboxObject.getFont() <a id="checkboxObject.getFont" href="#checkboxObject.getFont">&#x23;</a>
控件字体(::LOGFONT结构体)  
!logfont  

[返回对象:logfontObject](#logfontObject)

### checkboxObject.getParent() <a id="checkboxObject.getParent" href="#checkboxObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### checkboxObject.getPos() <a id="checkboxObject.getPos" href="#checkboxObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### checkboxObject.getRect() <a id="checkboxObject.getRect" href="#checkboxObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### checkboxObject.getRect(true) <a id="checkboxObject.getRect" href="#checkboxObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### checkboxObject.height <a id="checkboxObject.height" href="#checkboxObject.height">&#x23;</a>
高度

### checkboxObject.hwnd <a id="checkboxObject.hwnd" href="#checkboxObject.hwnd">&#x23;</a>
控件句柄

### checkboxObject.id <a id="checkboxObject.id" href="#checkboxObject.id">&#x23;</a>
控件ID

### checkboxObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="checkboxObject.invalidate(/*可选使用::RECT" href="#checkboxObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### checkboxObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="checkboxObject.invalidate(/*可选使用::RECT" href="#checkboxObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### checkboxObject.left <a id="checkboxObject.left" href="#checkboxObject.left">&#x23;</a>
左侧坐标

### checkboxObject.modifyStyle(remove,add,swpFlags) <a id="checkboxObject.modifyStyle" href="#checkboxObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### checkboxObject.modifyStyleEx(remove,add,swpFlags) <a id="checkboxObject.modifyStyleEx" href="#checkboxObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### checkboxObject.postMessage(msg,wParam,lParam) <a id="checkboxObject.postMessage" href="#checkboxObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### checkboxObject.redraw() <a id="checkboxObject.redraw" href="#checkboxObject.redraw">&#x23;</a>
刷新

### checkboxObject.right <a id="checkboxObject.right" href="#checkboxObject.right">&#x23;</a>
右侧坐标

### checkboxObject.sendMessage(msg,wParam,lParam) <a id="checkboxObject.sendMessage" href="#checkboxObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### checkboxObject.setFocus() <a id="checkboxObject.setFocus" href="#checkboxObject.setFocus">&#x23;</a>
设置焦点

### checkboxObject.setFont(指定字体) <a id="checkboxObject.setFont" href="#checkboxObject.setFont">&#x23;</a>
指定LOGFONT字体对象,或逻辑字体句柄

### checkboxObject.setFont(混入字体属性) <a id="checkboxObject.setFont" href="#checkboxObject.setFont">&#x23;</a>

```aardio
checkboxObject.setFont(point=10;name="宋体");
```

### checkboxObject.setParent(控件对象) <a id="checkboxObject.setParent" href="#checkboxObject.setParent">&#x23;</a>
改变父窗口

### checkboxObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="checkboxObject.setPos" href="#checkboxObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### checkboxObject.setRect(rc) <a id="checkboxObject.setRect" href="#checkboxObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### checkboxObject.setRect(rc,true) <a id="checkboxObject.setRect" href="#checkboxObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### checkboxObject.show(true) <a id="checkboxObject.show" href="#checkboxObject.show">&#x23;</a>
显示控件

### checkboxObject.text <a id="checkboxObject.text" href="#checkboxObject.text">&#x23;</a>
文本属性

### checkboxObject.theme <a id="checkboxObject.theme" href="#checkboxObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### checkboxObject.threadCallable() <a id="checkboxObject.threadCallable" href="#checkboxObject.threadCallable">&#x23;</a>
开启此控件的跨线程调用功能

### checkboxObject.top <a id="checkboxObject.top" href="#checkboxObject.top">&#x23;</a>
顶部坐标

### checkboxObject.update() <a id="checkboxObject.update" href="#checkboxObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### checkboxObject.visible <a id="checkboxObject.visible" href="#checkboxObject.visible">&#x23;</a>
当前控件窗口是否显示。  
仅检查当前窗口的可见性样式（窗口 是否具有 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。

### checkboxObject.width <a id="checkboxObject.width" href="#checkboxObject.width">&#x23;</a>
宽度

## checkboxObject 事件列表 <a id="checkboxObjectEvent" href="#checkboxObjectEvent">&#x23;</a>

### checkboxObject.onDrawItem(drawItem) <a id="checkboxObject.onDrawItem" href="#checkboxObject.onDrawItem">&#x23;</a>

```aardio
checkboxObject.onDrawItem = function(drawItem){

}
```

### checkboxObject.onMeasureItem(measureItem) <a id="checkboxObject.onMeasureItem" href="#checkboxObject.onMeasureItem">&#x23;</a>

```aardio
checkboxObject.onMeasureItem = function(measureItem){
	measureItem.itemHeight = 51;  
}
```

## radiobuttonObject 成员列表 <a id="radiobuttonObject" href="#radiobuttonObject">&#x23;</a>

### radiobuttonObject._defWindowProc(hwnd,message,wParam,lParam) <a id="radiobuttonObject._defWindowProc" href="#radiobuttonObject._defWindowProc">&#x23;</a>
用于在 wndproc 回调中提前调用默认消息回调函数,  
所有窗口和控件定义了 wndproc 回调以后会自动创建这个函数,  
调用此函数以后,wndproc 必须指定非 null 返回值,  
以避免再次重复调用默认回调函数

### radiobuttonObject._parentForm <a id="radiobuttonObject._parentForm" href="#radiobuttonObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/_.html#winform)

### radiobuttonObject.bottom <a id="radiobuttonObject.bottom" href="#radiobuttonObject.bottom">&#x23;</a>
底部坐标

### radiobuttonObject.capture <a id="radiobuttonObject.capture" href="#radiobuttonObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### radiobuttonObject.checked <a id="radiobuttonObject.checked" href="#radiobuttonObject.checked">&#x23;</a>
单选按钮否选中状态。  
仅改变单个控件的选项，不会改变同分组内其他单选按钮的选中状态。  
改为调用 click 方法可选中当前控件并取消选中其他单选按钮（相同分组）

### radiobuttonObject.click() <a id="radiobuttonObject.click" href="#radiobuttonObject.click">&#x23;</a>
模拟用户点击控件发送单击消息  
。选中当前控件并取消选中其他单选按钮（相同分组）

### radiobuttonObject.close() <a id="radiobuttonObject.close" href="#radiobuttonObject.close">&#x23;</a>
关闭控件窗

### radiobuttonObject.disabled <a id="radiobuttonObject.disabled" href="#radiobuttonObject.disabled">&#x23;</a>
是否禁用

### radiobuttonObject.getClientRect() <a id="radiobuttonObject.getClientRect" href="#radiobuttonObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/docs/library-reference/global/_.html#rectObject)

### radiobuttonObject.getFont() <a id="radiobuttonObject.getFont" href="#radiobuttonObject.getFont">&#x23;</a>
控件字体(::LOGFONT结构体)  
!logfont  

[返回对象:logfontObject](#logfontObject)

### radiobuttonObject.getParent() <a id="radiobuttonObject.getParent" href="#radiobuttonObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### radiobuttonObject.getPos() <a id="radiobuttonObject.getPos" href="#radiobuttonObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### radiobuttonObject.getRect() <a id="radiobuttonObject.getRect" href="#radiobuttonObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### radiobuttonObject.getRect(true) <a id="radiobuttonObject.getRect" href="#radiobuttonObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### radiobuttonObject.height <a id="radiobuttonObject.height" href="#radiobuttonObject.height">&#x23;</a>
高度

### radiobuttonObject.hwnd <a id="radiobuttonObject.hwnd" href="#radiobuttonObject.hwnd">&#x23;</a>
控件句柄

### radiobuttonObject.id <a id="radiobuttonObject.id" href="#radiobuttonObject.id">&#x23;</a>
控件ID

### radiobuttonObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="radiobuttonObject.invalidate(/*可选使用::RECT" href="#radiobuttonObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### radiobuttonObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="radiobuttonObject.invalidate(/*可选使用::RECT" href="#radiobuttonObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### radiobuttonObject.left <a id="radiobuttonObject.left" href="#radiobuttonObject.left">&#x23;</a>
左侧坐标

### radiobuttonObject.modifyStyle(remove,add,swpFlags) <a id="radiobuttonObject.modifyStyle" href="#radiobuttonObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### radiobuttonObject.modifyStyleEx(remove,add,swpFlags) <a id="radiobuttonObject.modifyStyleEx" href="#radiobuttonObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### radiobuttonObject.postMessage(msg,wParam,lParam) <a id="radiobuttonObject.postMessage" href="#radiobuttonObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### radiobuttonObject.redraw() <a id="radiobuttonObject.redraw" href="#radiobuttonObject.redraw">&#x23;</a>
刷新

### radiobuttonObject.right <a id="radiobuttonObject.right" href="#radiobuttonObject.right">&#x23;</a>
右侧坐标

### radiobuttonObject.sendMessage(msg,wParam,lParam) <a id="radiobuttonObject.sendMessage" href="#radiobuttonObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### radiobuttonObject.setFocus() <a id="radiobuttonObject.setFocus" href="#radiobuttonObject.setFocus">&#x23;</a>
设置焦点

### radiobuttonObject.setFont(指定字体) <a id="radiobuttonObject.setFont" href="#radiobuttonObject.setFont">&#x23;</a>
指定LOGFONT字体对象,或逻辑字体句柄

### radiobuttonObject.setFont(混入字体属性) <a id="radiobuttonObject.setFont" href="#radiobuttonObject.setFont">&#x23;</a>

```aardio
radiobuttonObject.setFont(point=10;name="宋体");
```

### radiobuttonObject.setParent(控件对象) <a id="radiobuttonObject.setParent" href="#radiobuttonObject.setParent">&#x23;</a>
改变父窗口

### radiobuttonObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="radiobuttonObject.setPos" href="#radiobuttonObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### radiobuttonObject.setRect(rc) <a id="radiobuttonObject.setRect" href="#radiobuttonObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### radiobuttonObject.setRect(rc,true) <a id="radiobuttonObject.setRect" href="#radiobuttonObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### radiobuttonObject.show(true) <a id="radiobuttonObject.show" href="#radiobuttonObject.show">&#x23;</a>
显示控件

### radiobuttonObject.text <a id="radiobuttonObject.text" href="#radiobuttonObject.text">&#x23;</a>
文本属性

### radiobuttonObject.theme <a id="radiobuttonObject.theme" href="#radiobuttonObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### radiobuttonObject.threadCallable() <a id="radiobuttonObject.threadCallable" href="#radiobuttonObject.threadCallable">&#x23;</a>
开启此控件的跨线程调用功能

### radiobuttonObject.top <a id="radiobuttonObject.top" href="#radiobuttonObject.top">&#x23;</a>
顶部坐标

### radiobuttonObject.update() <a id="radiobuttonObject.update" href="#radiobuttonObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### radiobuttonObject.visible <a id="radiobuttonObject.visible" href="#radiobuttonObject.visible">&#x23;</a>
当前控件窗口是否显示。  
仅检查当前窗口的可见性样式（窗口 是否具有 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。

### radiobuttonObject.width <a id="radiobuttonObject.width" href="#radiobuttonObject.width">&#x23;</a>
宽度

## radiobuttonObject 事件列表 <a id="radiobuttonObjectEvent" href="#radiobuttonObjectEvent">&#x23;</a>

### radiobuttonObject.onDrawItem(drawItem) <a id="radiobuttonObject.onDrawItem" href="#radiobuttonObject.onDrawItem">&#x23;</a>

```aardio
radiobuttonObject.onDrawItem = function(drawItem){

}
```

### radiobuttonObject.onMeasureItem(measureItem) <a id="radiobuttonObject.onMeasureItem" href="#radiobuttonObject.onMeasureItem">&#x23;</a>

```aardio
radiobuttonObject.onMeasureItem = function(measureItem){
	measureItem.itemHeight = 51;  
}
```

