nim duilib 框架使用 历史版本:
上次修改时间: 2023-03-25 22:31:02
全局样式管理器 历史版本:
上次修改时间: 2021-09-08 09:45:37
\n\n```\n\n当需要使用时,指定字体的编号即可。比如你希望一个 Button 按钮使用 ID 为 system_12 的字体,可以这样写:\n\n```xml\n
全局样式 历史版本:
上次修改时间: 2021-09-08 09:45:28
\n\n```\n\n当需要使用时,指定字体的编号即可。比如你希望一个 Button 按钮使用 ID 为 system_12 的字体,可以这样写:\n\n```xml\n\n```\n\n### Font 所有可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| id | | STRING | 字体ID(一旦使用 ID 属性,字体索引将不再生效) |\n| default | false | STRING | 是否是默认字体,如果未给控件指定字体,则使用该字体 |\n| name | | STRING | 字体在系统中的名称 |\n| size | 12 | INT | 字体大小 |\n| bold | false | BOOL | 是否粗体 |\n| underline | false | BOOL | 是否下划线 |\n| italic | false | BOOL | 是否斜体 |\n\n## 颜色(TextColor)\n\n你可以添加常用的颜色到 `global.xml` 中,如下所示:\n\n```xml\n\n\n```\n\n这样当你需要使用这个颜色给一个 Label 设置文字颜色时,可以这样写:\n\n```xml\n
布局容器 历史版本:
上次修改时间: 2021-09-08 09:51:11
\n\n \n \n \n\n```\n\n```xml\n\n\n \n \n \n \n \n \n\n```\n\n```xml\n\n\n \n \n \n \n \n \n \n\n```\n\n## 可用属性\n\n`HBox` 控件继承了 `Box` 容器属性,更多可用属性请参考:[Box](Box.md) 容器\n\n## 可用接口\n\n`HBox` 控件继承了 `Box` 容器接口,更多可用属性请参考:[Box](Box.md) 容器\n\n\n\n# VBox(垂直布局容器)\n\n`VBox` 继承于 [Box](Box.md) 但具有自定义垂直布局行为,该容器下的所有控件将有上向下依次垂直排布布局。以下为示例代码:\n\n```xml\n\n\n \n \n \n\n```\n\n```xml\n\n\n \n \n \n \n \n \n\n```\n\n## 可用属性\n\n`VBox` 控件继承了 `Box` 容器属性,更多可用属性请参考:[Box](Box.md) 容器\n\n## 可用接口\n\n`VBox` 控件继承了 `Box` 容器接口,更多可用属性请参考:[Box](Box.md) 容器\n\n# TabBox(多标签布局容器)\n\n`TabBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| fadeswitch | false | BOOL | 当切换页面时是否使用动画效果,如(false) |\n| selectedid | 0 | INT | 默认选中的页面id,如(0) |\n\n## 可用接口\n\n| 方法名称 | 用途 |\n| :--- | :--- |\n| [GetCurSel](#GetCurSel) | 获取当前选择项 |\n| [SelectItem](#SelectItem) | 根据控件索引选择一个子项 |\n| [SelectItem](#SelectItem) | 根据控件指针选择一个子项 |\n| [SelectItem](#SelectItem) | 根据控件名称选择一个子项 |\n| [SetFadeSwitch](#SetFadeSwitch) | 设置是否显示动画效果 |\n| [IsFadeSwitch](#IsFadeSwitch) | 判断是否需要显示动画效果 |\n| [ShowTabItem](#ShowTabItem) | 显示一个 TAB 项 |\n| [HideTabItem](#HideTabItem) | 隐藏一个 TAB 项 |\n\n### GetCurSel\n\n获取当前选择项\n\n```cpp\nint GetCurSel()\n```\n\n - 参 数:无 \n - 返回值:返回当前选择项索引\n\n### SelectItem\n\n根据控件索引选择一个子项\n\n```cpp\nbool SelectItem(int iIndex)\n```\n\n - 参 数: \n - `iIndex` 要选择的子项索引\n - 返回值:成功返回 true,否则返回 false\n\n### SelectItem\n\n根据控件指针选择一个子项\n\n```cpp\nbool SelectItem(Control* pControl)\n```\n\n - 参 数: \n - `pControl` 要选择的子项指针\n - 返回值:成功返回 true,否则返回 false\n\n### SelectItem\n\n根据控件名称选择一个子项\n\n```cpp\nbool SelectItem(const std::wstring& pControlName)\n```\n\n - 参 数: \n - `pControlName` 要选择的控件名称\n - 返回值:成功返回 true,否则返回 false\n\n### SetFadeSwitch\n\n设置是否显示动画效果\n\n```cpp\nvoid SetFadeSwitch(bool bFadeSwitch)\n```\n\n - 参 数: \n - `bFadeSwitch` 设置为 true 则显示,false 为不显示动画\n - 返回值:无\n\n### IsFadeSwitch\n\n判断是否需要显示动画效果\n\n```cpp\nbool IsFadeSwitch()\n```\n\n - 参 数:无 \n - 返回值:返回 true 显示动画,false 为不显示动画效果\n\n### ShowTabItem\n\n显示一个 TAB 项\n\n```cpp\nvoid ShowTabItem(std::size_t it)\n```\n\n - 参 数: \n - `it` TAB 项索引\n - 返回值:无\n\n### HideTabItem\n\n隐藏一个 TAB 项\n\n```cpp\nvoid HideTabItem(std::size_t it)\n```\n\n - 参 数: \n - `it` TAB 项索引\n - 返回值:无\n\n\n# TileBox(格子布局)\n\n`TileBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\ncolumns | 1 | INT | 列数,如(4) |\nitemsize | 0,0 | SIZE | 子项固定大小,如(128,128) |\n\n# ChildBox(子布局)\n\n`ChildBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| xmlfile | | STRING | 要嵌入的xml文件的地址,如(childxml.xml) |\n\n## 可用接口\n\n| 方法名称 | 用途 |\n| :--- | :--- |\n| [SetChildLayoutXML](#SetChildLayoutXML) | 设置 ChildBox 关联的 XML 文件 |\n| [GetChildLayoutXML](#GetChildLayoutXML) | 获取 ChildBox 关联的 XML 文件 |\n\n\n### SetChildLayoutXML\n\n设置 ChildBox 关联的 XML 文件\n\n```cpp\nvoid SetChildLayoutXML(std::wstring strXML)\n```\n\n - 参 数: \n - `strXML` XML 文件路径\n - 返回值:无\n\n### GetChildLayoutXML\n\n获取 ChildBox 关联的 XML 文件\n\n```cpp\nstd::wstring GetChildLayoutXML()\n```\n\n - 参 数:无 \n - 返回值:返回 ChildBox 关联的 XML 文件\n\n\n# ScrollableBox(可滚动布局容器)\n\n`ScrollableBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器。\n\n注意:此控件不能在 XML 中直接使用,仅作为可滚动布局容器的基类,此处仅记录继承该容器的其他容器所拥有的公共属性和方法。请参考使用 [ListBox](../List/ListBox.md)。\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| vscrollbar | false | BOOL | 是否使用竖向滚动条,如(true) |\n| hscrollbar | false | BOOL | 是否使用横向滚动条,如(true) |\n| vscrollbarstyle | | STRING | 设置本容器的纵向滚动条的样式 |\n| hscrollbarstyle | | STRING | 设置本容器的横向滚动条的样式 |\n| scrollbarpadding | 0,0,0,0 | RECT | 滚动条的外边距,可以让滚动条不占满容器,如(2,2,2,2) |\n| vscrollunit | 30 | INT | 容器的纵向滚动条滚动步长,0代表使用默认步长 |\n| scrollbarfloat | true | BOOL | 容器的滚动条是否悬浮在子控件上面,如(true) |\n| defaultdisplayscrollbar | true | BOOL | 暂时无用,未开发 |\n| holdend | false | BOOL | 是否一直保持显示末尾位置,如(true) |\n\n## 可用接口\n\n| 方法名称 | 用途 |\n| :--- | :--- |\n| [GetScrollPos](#GetScrollPos) | 获取滚动条位置 |\n| [GetScrollRange](#GetScrollRange) | 获取滚动条的范围 |\n| [SetScrollPos](#SetScrollPos) | 设置滚动条位置 |\n| [SetScrollPosY](#SetScrollPosY) | 设置滚动条 Y 轴坐标 |\n| [SetScrollPosX](#SetScrollPosX) | 设置滚动条 X 轴坐标 |\n| [LineUp](#LineUp) | 向上滚动滚动条 |\n| [LineDown](#LineDown) | 向下滚动滚动条 |\n| [LineLeft](#LineLeft) | 向左滚动 |\n| [LineRight](#LineRight) | 向右滚动 |\n| [PageUp](#PageUp) | 向上滚动一个页面大小的距离 |\n| [PageDown](#PageDown) | 向下滚动一个页面大小的距离 |\n| [HomeUp](#HomeUp) | 回到滚动条最上方 |\n| [EndDown](#EndDown) | 滚动到最下方位置 |\n| [PageLeft](#PageLeft) | 向左滚动一个页面大小的距离 |\n| [PageRight](#PageRight) | 向右滚动一个页面大小的距离 |\n| [HomeLeft](#HomeLeft) | 滚动到最左侧 |\n| [EndRight](#EndRight) | 滚动到最右侧 |\n| [TouchUp](#TouchUp) | 触摸向上滚动(响应 WM_TOUCH 消息) |\n| [TouchDown](#TouchDown) | 触摸向下滚动(响应 WM_TOUCH 消息) |\n| [EnableScrollBar](#EnableScrollBar) | 启用滚动条 |\n| [GetVerticalScrollBar](#GetVerticalScrollBar) | 获取垂直滚动条对象指针 |\n| [GetHorizontalScrollBar](#GetHorizontalScrollBar) | 获取水平滚动条对象指针 |\n| [ProcessVScrollBar](#ProcessVScrollBar) | 待补充 |\n| [ProcessHScrollBar](#ProcessHScrollBar) | 待补充 |\n| [IsVScrollBarValid](#IsVScrollBarValid) | 判断垂直滚动条是否有效 |\n| [IsHScrollBarValid](#IsHScrollBarValid) | 判断水平滚动条是否有效 |\n| [ReomveLastItemAnimation](#ReomveLastItemAnimation) | 待补充 |\n| [PlayRenderOffsetYAnimation](#PlayRenderOffsetYAnimation) | 待补充 |\n| [IsAtEnd](#IsAtEnd) | 是否已经在底部 |\n| [IsHoldEnd](#IsHoldEnd) | 是否锁定到底部 |\n| [SetHoldEnd](#SetHoldEnd) | 设置滚动条是否始终锁定到底部位置 |\n| [GetVerScrollUnitPixels](#GetVerScrollUnitPixels) | 获取垂直滚动条滚动步长 |\n| [SetVerScrollUnitPixels](#SetVerScrollUnitPixels) | 设置垂直滚动条滚动步长 |\n| [GetScrollBarFloat](#GetScrollBarFloat) | 获取容器的滚动条是否悬浮在子控件上面 |\n| [SetScrollBarFloat](#SetScrollBarFloat) | 设置容器的滚动条是否悬浮在子控件上面 |\n| [GetScrollBarPadding](#GetScrollBarPadding) | 获取滚动条的外边距 |\n| [SetScrollBarPadding](#SetScrollBarPadding) | 设置滚动条的外边距,可以让滚动条不占满容器 |\n| [GetDefaultDisplayScrollbar](#GetDefaultDisplayScrollbar) | 待补充 |\n| [SetDefaultDisplayScrollbar](#SetDefaultDisplayScrollbar) | 待补充 |\n| [AttachScrollChange](#AttachScrollChange) | 监听滚动条位置变化事件 |\n| [CalcRequiredSize](#CalcRequiredSize) | 计算所需的尺寸 |\n| [LoadImageCache](#LoadImageCache) | 加载图片缓存,仅供 ScrollableBox 内部使用 |\n| [SetPosInternally](#SetPosInternally) | 待补充 |\n\n## GetScrollPos\n\n获取滚动条位置\n\n```cpp\nvirtual CSize GetScrollPos()\n```\n\n - 返回值:返回滚动条的位置信息\n\n## GetScrollRange\n\n获取滚动条的范围\n\n```cpp\nvirtual CSize GetScrollRange()\n```\n\n - 返回值:返回滚动条的范围信息\n\n## SetScrollPos\n\n设置滚动条位置\n\n```cpp\nvirtual void SetScrollPos(CSize szPos)\n```\n\n - 参数: \n - `szPos` 要设置的位置数据\n - 返回值:无\n\n## SetScrollPosY\n\n设置滚动条 Y 轴坐标\n\n```cpp\nvirtual void SetScrollPosY(int y)\n```\n\n - 参数: \n - `y` 要设置的 y 轴坐标数值\n - 返回值:无\n \n## SetScrollPosX\n\n设置滚动条 X 轴坐标\n\n```cpp\nvirtual void SetScrollPosX(int x)\n```\n\n - 参数: \n - `x` 要设置的 x 轴坐标数值\n - 返回值:无\n\n## LineUp\n\n向上滚动滚动条\n\n```cpp\nvirtual void LineUp(int detaValue = DUI_NOSET_VALUE, bool withAnimation = true)\n```\n\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - `withAnimation` 是否附带动画效果,默认为 true\n - 返回值:无\n\n## LineDown\n\n向下滚动滚动条\n\n```cpp\nvirtual void LineDown(int detaValue = DUI_NOSET_VALUE, bool withAnimation = true)\n```\n\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - `withAnimation` 是否附带动画效果,默认为 true\n - 返回值:无\n\n## LineLeft\n\n向左滚动\n\n```cpp\nvirtual void LineLeft(int detaValue = DUI_NOSET_VALUE)\n```\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - 返回值:无\n\n## LineRight\n\n向右滚动\n\n```cpp\nvirtual void LineRight(int detaValue = DUI_NOSET_VALUE)\n```\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - 返回值:无\n\n## PageUp\n\n向上滚动一个页面大小的距离\n\n```cpp\nvirtual void PageUp()\n```\n\n - 返回值:无\n\n## PageDown\n\n向下滚动一个页面大小的距离\n\n```cpp\nvirtual void PageDown()\n```\n\n - 返回值:无\n\n## HomeUp\n\n回到滚动条最上方\n\n```cpp\nvirtual void HomeUp()\n```\n\n - 返回值:无\n\n## EndDown\n\n滚动到最下方位置\n\n```cpp\nvirtual void EndDown(bool arrange = true, bool withAnimation = true)\n```\n\n - 参数: \n - `arrange` 是否重置滚动条位置,默认为 true\n - `withAnimation` 是否包含动画特效,默认为 true\n - 返回值:无\n\n## PageLeft\n\n向左滚动一个页面大小的距离\n\n```cpp\nvirtual void PageLeft()\n```\n\n - 返回值:无\n\n## PageRight\n\n向右滚动一个页面大小的距离\n\n```cpp\nvirtual void PageRight()\n```\n\n - 返回值:无\n\n## HomeLeft\n\n滚动到最左侧\n\n```cpp\nvirtual void HomeLeft()\n```\n\n - 返回值:无\n\n## EndRight\n\n滚动到最右侧\n\n```cpp\nvirtual void EndRight()\n```\n\n - 返回值:无\n\n## TouchUp\n\n触摸向上滚动(响应 WM_TOUCH 消息)\n\n```cpp\nvirtual void TouchUp(int deltaValue)\n```\n\n - 参数: \n - `deltaValue` 滚动距离\n - 返回值:无\n\n## TouchDown\n\n触摸向下滚动(响应 WM_TOUCH 消息)\n\n```cpp\nvirtual void TouchDown(int deltaValue)\n```\n\n - 参数: \n - `deltaValue` 滚动距离\n - 返回值:无\n\n## EnableScrollBar\n\n启用滚动条\n\n```cpp\nvirtual void EnableScrollBar(bool bEnableVertical = true, bool bEnableHorizontal = false)\n```\n\n - 参数: \n - `bEnableVertical` 是否启用垂直滚动条,默认为 true\n - `bEnableHorizontal` 是否启用水平滚动条,默认为 true\n - 返回值:无\n\n## GetVerticalScrollBar\n\n获取垂直滚动条对象指针\n\n```cpp\nvirtual ScrollBar* GetVerticalScrollBar()\n```\n\n - 返回值:返回垂直滚动条对象指针\n\n## GetHorizontalScrollBar\n\n获取水平滚动条对象指针\n\n```cpp\nvirtual ScrollBar* GetHorizontalScrollBar()\n```\n\n - 返回值:返回水平滚动条对象指针\n\n## ProcessVScrollBar\n\n待补充\n\n```cpp\nvirtual void ProcessVScrollBar(UiRect rc, int cyRequired)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## ProcessHScrollBar\n\n待补充\n\n```cpp\nvirtual void ProcessHScrollBar(UiRect rc, int cxRequired)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## IsVScrollBarValid\n\n判断垂直滚动条是否有效\n\n```cpp\nbool IsVScrollBarValid()\n```\n\n - 返回值:返回 true 表示有效,否则 false 为无效\n\n## IsHScrollBarValid\n\n判断水平滚动条是否有效\n\n```cpp\nbool IsHScrollBarValid()\n```\n\n - 返回值:返回 true 表示有效,否则 false 为无效\n\n## ReomveLastItemAnimation\n\n待补充\n\n```cpp\nvoid ReomveLastItemAnimation()\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## PlayRenderOffsetYAnimation\n\n待补充\n\n```cpp\nvoid PlayRenderOffsetYAnimation(int nRenderY)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## IsAtEnd\n\n是否已经在底部\n\n```cpp\nbool IsAtEnd()\n```\n\n - 返回值:返回 true 表示已经在底部,否则为 false\n\n## IsHoldEnd\n\n是否锁定到底部\n\n```cpp\nbool IsHoldEnd()\n```\n\n - 返回值:回 true 表示锁定在底部,否则为 false\n\n## SetHoldEnd\n\n设置滚动条是否始终锁定到底部位置\n\n```cpp\nvoid SetHoldEnd(bool bHoldEnd)\n```\n\n - 参数: \n - `bHoldEnd` 设置 true 表示锁定,false 为不锁定\n - 返回值:无\n\n## GetVerScrollUnitPixels\n\n获取垂直滚动条滚动步长\n\n```cpp\nint GetVerScrollUnitPixels()\n```\n\n - 返回值:返回滚动步长\n\n## SetVerScrollUnitPixels\n\n设置垂直滚动条滚动步长\n\n```cpp\nvoid SetVerScrollUnitPixels(int nUnitPixels)\n```\n\n - 参数: \n - `nUnitPixels` 要设置的步长\n - 返回值:无\n\n## GetScrollBarFloat\n\n获取容器的滚动条是否悬浮在子控件上面\n\n```cpp\nbool GetScrollBarFloat()\n```\n\n - 返回值:返回 true 表示悬浮在滚动条上,否则为 false\n\n## SetScrollBarFloat\n\n设置容器的滚动条是否悬浮在子控件上面\n\n```cpp\nvoid SetScrollBarFloat(bool bScrollBarFloat)\n```\n\n - 参数: \n - `bScrollBarFloat` true 表示悬浮在滚动条上,false 表示不悬浮在控件上\n - 返回值:无\n\n## GetScrollBarPadding\n\n获取滚动条的外边距\n\n```cpp\nUiRect GetScrollBarPadding()\n```\n\n - 返回值:返回边距信息 \n\n## SetScrollBarPadding\n\n设置滚动条的外边距,可以让滚动条不占满容器\n\n```cpp\nvoid SetScrollBarPadding(UiRect rcScrollBarPadding)\n```\n\n - 参数: \n - `rcScrollBarPadding` 要设置的边距\n - 返回值:无\n\n## GetDefaultDisplayScrollbar\n\n待补充\n\n```cpp\nbool GetDefaultDisplayScrollbar()\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## SetDefaultDisplayScrollbar\n\n待补充\n\n```cpp\nvoid SetDefaultDisplayScrollbar(bool bDefaultDisplay)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## AttachScrollChange\n\n监听滚动条位置变化事件\n\n```cpp\nvoid AttachScrollChange(const EventCallback& callback)\n```\n\n - 参数: \n - `callback` 有变化后通知的回调函数\n - 返回值:无\n\n## CalcRequiredSize\n\n计算所需的尺寸\n\n```cpp\nvirtual CSize CalcRequiredSize(const UiRect& rc)\n```\n\n - 参数: \n - `rc` 当前位置信息\n - 返回值:返回所需尺寸大小\n\n## LoadImageCache\n\n加载图片缓存,仅供 ScrollableBox 内部使用\n\n```cpp\nvoid LoadImageCache(bool bFromTopLeft)\n```\n\n - 参数: \n - `bFromTopLeft` 暂无意义\n - 返回值:无\n\n## SetPosInternally\n\n待补充\n\n```cpp\nvoid SetPosInternally(UiRect rc)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n\n# ChildBox(子布局)\n\n`ChildBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| xmlfile | | STRING | 要嵌入的xml文件的地址,如(childxml.xml) |\n\n## 可用接口\n\n| 方法名称 | 用途 |\n| :--- | :--- |\n| [SetChildLayoutXML](#SetChildLayoutXML) | 设置 ChildBox 关联的 XML 文件 |\n| [GetChildLayoutXML](#GetChildLayoutXML) | 获取 ChildBox 关联的 XML 文件 |\n\n\n### SetChildLayoutXML\n\n设置 ChildBox 关联的 XML 文件\n\n```cpp\nvoid SetChildLayoutXML(std::wstring strXML)\n```\n\n - 参 数: \n - `strXML` XML 文件路径\n - 返回值:无\n\n### GetChildLayoutXML\n\n获取 ChildBox 关联的 XML 文件\n\n```cpp\nstd::wstring GetChildLayoutXML()\n```\n\n - 参 数:无 \n - 返回值:返回 ChildBox 关联的 XML 文件\n\n# ScrollableBox(可滚动布局容器)\n\n`ScrollableBox` 继承了 `Box` 容器属性和方法,更多可用属性和方法请参考:[Box](Box.md) 容器。\n\n注意:此控件不能在 XML 中直接使用,仅作为可滚动布局容器的基类,此处仅记录继承该容器的其他容器所拥有的公共属性和方法。请参考使用 [ListBox](../List/ListBox.md)。\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| vscrollbar | false | BOOL | 是否使用竖向滚动条,如(true) |\n| hscrollbar | false | BOOL | 是否使用横向滚动条,如(true) |\n| vscrollbarstyle | | STRING | 设置本容器的纵向滚动条的样式 |\n| hscrollbarstyle | | STRING | 设置本容器的横向滚动条的样式 |\n| scrollbarpadding | 0,0,0,0 | RECT | 滚动条的外边距,可以让滚动条不占满容器,如(2,2,2,2) |\n| vscrollunit | 30 | INT | 容器的纵向滚动条滚动步长,0代表使用默认步长 |\n| scrollbarfloat | true | BOOL | 容器的滚动条是否悬浮在子控件上面,如(true) |\n| defaultdisplayscrollbar | true | BOOL | 暂时无用,未开发 |\n| holdend | false | BOOL | 是否一直保持显示末尾位置,如(true) |\n\n## 可用接口\n\n| 方法名称 | 用途 |\n| :--- | :--- |\n| [GetScrollPos](#GetScrollPos) | 获取滚动条位置 |\n| [GetScrollRange](#GetScrollRange) | 获取滚动条的范围 |\n| [SetScrollPos](#SetScrollPos) | 设置滚动条位置 |\n| [SetScrollPosY](#SetScrollPosY) | 设置滚动条 Y 轴坐标 |\n| [SetScrollPosX](#SetScrollPosX) | 设置滚动条 X 轴坐标 |\n| [LineUp](#LineUp) | 向上滚动滚动条 |\n| [LineDown](#LineDown) | 向下滚动滚动条 |\n| [LineLeft](#LineLeft) | 向左滚动 |\n| [LineRight](#LineRight) | 向右滚动 |\n| [PageUp](#PageUp) | 向上滚动一个页面大小的距离 |\n| [PageDown](#PageDown) | 向下滚动一个页面大小的距离 |\n| [HomeUp](#HomeUp) | 回到滚动条最上方 |\n| [EndDown](#EndDown) | 滚动到最下方位置 |\n| [PageLeft](#PageLeft) | 向左滚动一个页面大小的距离 |\n| [PageRight](#PageRight) | 向右滚动一个页面大小的距离 |\n| [HomeLeft](#HomeLeft) | 滚动到最左侧 |\n| [EndRight](#EndRight) | 滚动到最右侧 |\n| [TouchUp](#TouchUp) | 触摸向上滚动(响应 WM_TOUCH 消息) |\n| [TouchDown](#TouchDown) | 触摸向下滚动(响应 WM_TOUCH 消息) |\n| [EnableScrollBar](#EnableScrollBar) | 启用滚动条 |\n| [GetVerticalScrollBar](#GetVerticalScrollBar) | 获取垂直滚动条对象指针 |\n| [GetHorizontalScrollBar](#GetHorizontalScrollBar) | 获取水平滚动条对象指针 |\n| [ProcessVScrollBar](#ProcessVScrollBar) | 待补充 |\n| [ProcessHScrollBar](#ProcessHScrollBar) | 待补充 |\n| [IsVScrollBarValid](#IsVScrollBarValid) | 判断垂直滚动条是否有效 |\n| [IsHScrollBarValid](#IsHScrollBarValid) | 判断水平滚动条是否有效 |\n| [ReomveLastItemAnimation](#ReomveLastItemAnimation) | 待补充 |\n| [PlayRenderOffsetYAnimation](#PlayRenderOffsetYAnimation) | 待补充 |\n| [IsAtEnd](#IsAtEnd) | 是否已经在底部 |\n| [IsHoldEnd](#IsHoldEnd) | 是否锁定到底部 |\n| [SetHoldEnd](#SetHoldEnd) | 设置滚动条是否始终锁定到底部位置 |\n| [GetVerScrollUnitPixels](#GetVerScrollUnitPixels) | 获取垂直滚动条滚动步长 |\n| [SetVerScrollUnitPixels](#SetVerScrollUnitPixels) | 设置垂直滚动条滚动步长 |\n| [GetScrollBarFloat](#GetScrollBarFloat) | 获取容器的滚动条是否悬浮在子控件上面 |\n| [SetScrollBarFloat](#SetScrollBarFloat) | 设置容器的滚动条是否悬浮在子控件上面 |\n| [GetScrollBarPadding](#GetScrollBarPadding) | 获取滚动条的外边距 |\n| [SetScrollBarPadding](#SetScrollBarPadding) | 设置滚动条的外边距,可以让滚动条不占满容器 |\n| [GetDefaultDisplayScrollbar](#GetDefaultDisplayScrollbar) | 待补充 |\n| [SetDefaultDisplayScrollbar](#SetDefaultDisplayScrollbar) | 待补充 |\n| [AttachScrollChange](#AttachScrollChange) | 监听滚动条位置变化事件 |\n| [CalcRequiredSize](#CalcRequiredSize) | 计算所需的尺寸 |\n| [LoadImageCache](#LoadImageCache) | 加载图片缓存,仅供 ScrollableBox 内部使用 |\n| [SetPosInternally](#SetPosInternally) | 待补充 |\n\n## GetScrollPos\n\n获取滚动条位置\n\n```cpp\nvirtual CSize GetScrollPos()\n```\n\n - 返回值:返回滚动条的位置信息\n\n## GetScrollRange\n\n获取滚动条的范围\n\n```cpp\nvirtual CSize GetScrollRange()\n```\n\n - 返回值:返回滚动条的范围信息\n\n## SetScrollPos\n\n设置滚动条位置\n\n```cpp\nvirtual void SetScrollPos(CSize szPos)\n```\n\n - 参数: \n - `szPos` 要设置的位置数据\n - 返回值:无\n\n## SetScrollPosY\n\n设置滚动条 Y 轴坐标\n\n```cpp\nvirtual void SetScrollPosY(int y)\n```\n\n - 参数: \n - `y` 要设置的 y 轴坐标数值\n - 返回值:无\n \n## SetScrollPosX\n\n设置滚动条 X 轴坐标\n\n```cpp\nvirtual void SetScrollPosX(int x)\n```\n\n - 参数: \n - `x` 要设置的 x 轴坐标数值\n - 返回值:无\n\n## LineUp\n\n向上滚动滚动条\n\n```cpp\nvirtual void LineUp(int detaValue = DUI_NOSET_VALUE, bool withAnimation = true)\n```\n\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - `withAnimation` 是否附带动画效果,默认为 true\n - 返回值:无\n\n## LineDown\n\n向下滚动滚动条\n\n```cpp\nvirtual void LineDown(int detaValue = DUI_NOSET_VALUE, bool withAnimation = true)\n```\n\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - `withAnimation` 是否附带动画效果,默认为 true\n - 返回值:无\n\n## LineLeft\n\n向左滚动\n\n```cpp\nvirtual void LineLeft(int detaValue = DUI_NOSET_VALUE)\n```\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - 返回值:无\n\n## LineRight\n\n向右滚动\n\n```cpp\nvirtual void LineRight(int detaValue = DUI_NOSET_VALUE)\n```\n - 参数: \n - `deltaValue` 滚动距离,默认为 DUI_NOSET_VALUE\n - 返回值:无\n\n## PageUp\n\n向上滚动一个页面大小的距离\n\n```cpp\nvirtual void PageUp()\n```\n\n - 返回值:无\n\n## PageDown\n\n向下滚动一个页面大小的距离\n\n```cpp\nvirtual void PageDown()\n```\n\n - 返回值:无\n\n## HomeUp\n\n回到滚动条最上方\n\n```cpp\nvirtual void HomeUp()\n```\n\n - 返回值:无\n\n## EndDown\n\n滚动到最下方位置\n\n```cpp\nvirtual void EndDown(bool arrange = true, bool withAnimation = true)\n```\n\n - 参数: \n - `arrange` 是否重置滚动条位置,默认为 true\n - `withAnimation` 是否包含动画特效,默认为 true\n - 返回值:无\n\n## PageLeft\n\n向左滚动一个页面大小的距离\n\n```cpp\nvirtual void PageLeft()\n```\n\n - 返回值:无\n\n## PageRight\n\n向右滚动一个页面大小的距离\n\n```cpp\nvirtual void PageRight()\n```\n\n - 返回值:无\n\n## HomeLeft\n\n滚动到最左侧\n\n```cpp\nvirtual void HomeLeft()\n```\n\n - 返回值:无\n\n## EndRight\n\n滚动到最右侧\n\n```cpp\nvirtual void EndRight()\n```\n\n - 返回值:无\n\n## TouchUp\n\n触摸向上滚动(响应 WM_TOUCH 消息)\n\n```cpp\nvirtual void TouchUp(int deltaValue)\n```\n\n - 参数: \n - `deltaValue` 滚动距离\n - 返回值:无\n\n## TouchDown\n\n触摸向下滚动(响应 WM_TOUCH 消息)\n\n```cpp\nvirtual void TouchDown(int deltaValue)\n```\n\n - 参数: \n - `deltaValue` 滚动距离\n - 返回值:无\n\n## EnableScrollBar\n\n启用滚动条\n\n```cpp\nvirtual void EnableScrollBar(bool bEnableVertical = true, bool bEnableHorizontal = false)\n```\n\n - 参数: \n - `bEnableVertical` 是否启用垂直滚动条,默认为 true\n - `bEnableHorizontal` 是否启用水平滚动条,默认为 true\n - 返回值:无\n\n## GetVerticalScrollBar\n\n获取垂直滚动条对象指针\n\n```cpp\nvirtual ScrollBar* GetVerticalScrollBar()\n```\n\n - 返回值:返回垂直滚动条对象指针\n\n## GetHorizontalScrollBar\n\n获取水平滚动条对象指针\n\n```cpp\nvirtual ScrollBar* GetHorizontalScrollBar()\n```\n\n - 返回值:返回水平滚动条对象指针\n\n## ProcessVScrollBar\n\n待补充\n\n```cpp\nvirtual void ProcessVScrollBar(UiRect rc, int cyRequired)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## ProcessHScrollBar\n\n待补充\n\n```cpp\nvirtual void ProcessHScrollBar(UiRect rc, int cxRequired)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## IsVScrollBarValid\n\n判断垂直滚动条是否有效\n\n```cpp\nbool IsVScrollBarValid()\n```\n\n - 返回值:返回 true 表示有效,否则 false 为无效\n\n## IsHScrollBarValid\n\n判断水平滚动条是否有效\n\n```cpp\nbool IsHScrollBarValid()\n```\n\n - 返回值:返回 true 表示有效,否则 false 为无效\n\n## ReomveLastItemAnimation\n\n待补充\n\n```cpp\nvoid ReomveLastItemAnimation()\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## PlayRenderOffsetYAnimation\n\n待补充\n\n```cpp\nvoid PlayRenderOffsetYAnimation(int nRenderY)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## IsAtEnd\n\n是否已经在底部\n\n```cpp\nbool IsAtEnd()\n```\n\n - 返回值:返回 true 表示已经在底部,否则为 false\n\n## IsHoldEnd\n\n是否锁定到底部\n\n```cpp\nbool IsHoldEnd()\n```\n\n - 返回值:回 true 表示锁定在底部,否则为 false\n\n## SetHoldEnd\n\n设置滚动条是否始终锁定到底部位置\n\n```cpp\nvoid SetHoldEnd(bool bHoldEnd)\n```\n\n - 参数: \n - `bHoldEnd` 设置 true 表示锁定,false 为不锁定\n - 返回值:无\n\n## GetVerScrollUnitPixels\n\n获取垂直滚动条滚动步长\n\n```cpp\nint GetVerScrollUnitPixels()\n```\n\n - 返回值:返回滚动步长\n\n## SetVerScrollUnitPixels\n\n设置垂直滚动条滚动步长\n\n```cpp\nvoid SetVerScrollUnitPixels(int nUnitPixels)\n```\n\n - 参数: \n - `nUnitPixels` 要设置的步长\n - 返回值:无\n\n## GetScrollBarFloat\n\n获取容器的滚动条是否悬浮在子控件上面\n\n```cpp\nbool GetScrollBarFloat()\n```\n\n - 返回值:返回 true 表示悬浮在滚动条上,否则为 false\n\n## SetScrollBarFloat\n\n设置容器的滚动条是否悬浮在子控件上面\n\n```cpp\nvoid SetScrollBarFloat(bool bScrollBarFloat)\n```\n\n - 参数: \n - `bScrollBarFloat` true 表示悬浮在滚动条上,false 表示不悬浮在控件上\n - 返回值:无\n\n## GetScrollBarPadding\n\n获取滚动条的外边距\n\n```cpp\nUiRect GetScrollBarPadding()\n```\n\n - 返回值:返回边距信息 \n\n## SetScrollBarPadding\n\n设置滚动条的外边距,可以让滚动条不占满容器\n\n```cpp\nvoid SetScrollBarPadding(UiRect rcScrollBarPadding)\n```\n\n - 参数: \n - `rcScrollBarPadding` 要设置的边距\n - 返回值:无\n\n## GetDefaultDisplayScrollbar\n\n待补充\n\n```cpp\nbool GetDefaultDisplayScrollbar()\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## SetDefaultDisplayScrollbar\n\n待补充\n\n```cpp\nvoid SetDefaultDisplayScrollbar(bool bDefaultDisplay)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n\n## AttachScrollChange\n\n监听滚动条位置变化事件\n\n```cpp\nvoid AttachScrollChange(const EventCallback& callback)\n```\n\n - 参数: \n - `callback` 有变化后通知的回调函数\n - 返回值:无\n\n## CalcRequiredSize\n\n计算所需的尺寸\n\n```cpp\nvirtual CSize CalcRequiredSize(const UiRect& rc)\n```\n\n - 参数: \n - `rc` 当前位置信息\n - 返回值:返回所需尺寸大小\n\n## LoadImageCache\n\n加载图片缓存,仅供 ScrollableBox 内部使用\n\n```cpp\nvoid LoadImageCache(bool bFromTopLeft)\n```\n\n - 参数: \n - `bFromTopLeft` 暂无意义\n - 返回值:无\n\n## SetPosInternally\n\n待补充\n\n```cpp\nvoid SetPosInternally(UiRect rc)\n```\n\n - 参数: \n - `待补充\n - 返回值:待补充\n -->
window控件 历史版本:
上次修改时间: 2021-09-08 09:54:45
\n\n```\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| class | | STRING | 控件样式,用样式里面的属性值来设置本控件的属性,如(btn_default),可以同时指定多个样式,各个样式之间用空格分隔,需要写在第一个属性位置, |\n| name | | STRING | 控件名字,同一窗口内必须唯一,如(testbtn) |\n| halign | left | STRING | 控件的横向位置,如(center),支持left、center、right三种位置 |\n| valign | top | STRING | 控件的纵向位置,如(center),支持top、center、bottom三种位置 |\n| margin | 0,0,0,0 | RECT | 外边距,如(2,2,2,2) |\n| bkcolor | | STRING | 背景颜色字符串常量,如(white) |\n| bkcolor1 | | STRING | 背景渐变色1,和bkcolor配合使用,如(blue) |\n| normalcolor | | STRING | 普通状态颜色,如(white) |\n| hotcolor | | STRING | 悬浮状态颜色,如(white) |\n| pushedcolor | | STRING | 按下状态颜色,如(white) |\n| disabledcolor | | STRING | 禁用状态颜色,如(white) |\n| bordercolor | | STRING | 边框颜色,如(blue) |\n| bordersize | 0 | INT / RECT | 可以设置INT或RECT类型的值。当值为ING时则左、上、右、下都用该值作为宽。值为RECT类型时则分别设置左、上、右、下的边框 |\n| leftbordersize | 0 | INT | 左边边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| topbordersize | 0 | INT | 顶部边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| rightbordersize | 0 | INT | 右边边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| bottombordersize | 0 | INT | 底部边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| borderround | 0,0 | SIZE | 边框圆角半径,如(2,2) |\n| width | stretch | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小宽度,如(100);当值为STRING时,stretch代表由父容器计算控件宽度,auto代表根据内容情况自动计算宽度 |\n| height | stretch | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小高度,如(100);当值为STRING时,stretch代表由父容器计算控件高度,auto代表根据内容情况自动计算高度 |\n| minwidth | -1 | INT | 控件的最小宽度,如(30) |\n| minheight | -1 | INT | 控件的最小高度,如(30) |\n| maxwidth | 9999999 | INT / STRING | 控件的最大宽度,描述同width |\n| maxheight | 9999999 | INT / STRING | 控件的最大高度,描述同height |\n| bkimage | | STRING | 背景图片,如(bk.bmp或file=\'aaa.jpg\' res=\'\' dest=\'0,0,0,0\' source=\'0,0,0,0\' corner=\'0,0,0,0\' fade=\'255\' xtiled=\'false\' ytiled=\'false\') |\n| tooltiptext | | STRING | 鼠标悬浮提示,如(请在这里输入你的密码) |\n| tooltiptextid | | STRING | 鼠标悬浮提示,指定多语言模块的ID,当tooltiptext为空时则显示此属性,如(TOOL_TIP_ID) |\n| dataid | | STRING | 自定义字符串数据,辅助函数,供用户使用 |\n| enabled | true | BOOL | 是否可以响应用户操作,如(true) |\n| mouse | true | BOOL | 本控件是否可以响应鼠标操作,如(true) |\n| receivepointer | true | BOOL | 是否响应触控消息,如(true) |\n| keyboard | true | BOOL | 非CButtonUI类忽略该值,为false时不支持TAB_STOP,且该对象不处理键盘信息 |\n| visible | true | BOOL | 是否可见,如(true) |\n| fadevisible | true | BOOL | 是否可见,如(true),此属性会触发控件动画效果 |\n| float | false | BOOL | 是否使用绝对定位,如(true) |\n| menu | false | BOOL | 是否需要右键菜单,如(true) |\n| cache | false | BOOL | 是否启用控件绘制缓存,如(true) |\n| nofocus | false | BOOL | 是否可以获取焦点,如(true) |\n| alpha | 255 | INT | 控件的整体透明度,如(128) |\n| state | normal | STRING | 控件的当前状态,支持normal、hot、pushed、disabled状态 |\n| cursortype | arrow | STRING | 鼠标移动到控件上时的鼠标光标,arrow、hand、ibeam |\n| normalimage | | STRING | 普通状态图片 |\n| hotimage | | STRING | 鼠标悬浮的状态图片 |\n| pushedimage | | STRING | 鼠标按下的状态图片 |\n| disabledimage | | STRING | 禁用的状态图片 |\n| forenormalimage | | STRING | 普通状态前景图片 |\n| forehotimage | | STRING | 鼠标悬浮的状态前景图片 |\n| forepushedimage | | STRING | 鼠标按下的状态前景图片 |\n| foredisabledimage | | STRING | 禁用的状态前景图片 |\n| renderoffset | 0,0 | SIZE | 控件绘制时的偏移量,如(10,10),一般用于绘制动画 |\n| fadealpha | false | BOOL | 是否启用控件透明渐变动画,如(true) |\n| fadehot | false | BOOL | 是否启用控件悬浮状态下 的透明渐变动画,如(true) |\n| fadewidth | false | BOOL | 是否启用控件宽度渐变动画,如(true) |\n| fadeheight | false | BOOL | 是否启用控件高度渐变动画,如(true) |\n| fadeinoutxfromleft | false | BOOL | 是否启用控件从左到右的动画,如(true) |\n| fadeinoutxfromright | false | BOOL | 是否启用控件从右到左的动画,如(true) | \n| fadeinoutyfromtop | false | BOOL | 是否启用控件从上到下的动画,如(true) | \n| fadeinoutyfrombottom | false | BOOL | 是否启用控件从下到上的动画,如(true) |\n\n## 可用接口\n\n`Control` 继承了 `PlaceHolder` 提供的接口,包含了所有基础控件共有的属性。\n\n| 接口名称 | 用途 |\n| :--- | :--- |\n| [GetParent](#GetParent) | 获取父容器指针 |\n| [GetAncestor](#GetAncestor) | 根据名称获取祖先容器指针 |\n| [GetName](#GetName) | 获取控件名称,对应 xml 中 name 属性 |\n| [GetUTF8Name](#GetUTF8Name) | 获取控件名称,对应 xml 中 name 属性 |\n| [SetName](#SetName) | 设置控件名称,内存中设置不会写入 xml 中 |\n| [SetUTF8Name](#SetUTF8Name) | 设置控件名称,内存中设置不会写入 xml 中(UTF8 编码) |\n| [GetWindow](#GetWindow) | 获取关联的窗口指针 |\n| [SetWindow](#SetWindow) | 设置容器所属窗口 |\n| [Init](#Init) | 初始化函数 |\n| [DoInit](#DoInit) | 由 Init 调用,功能与 Init 相同 |\n| [IsVisible](#IsVisible) | 判断是否可见 |\n| [IsInternVisible](#IsInternVisible) | 待补充 |\n| [IsFloat](#IsFloat) | 判断控件是否浮动,对应 xml 中 float 属性 |\n| [SetFloat](#SetFloat) | 设置控件是否浮动 |\n| [GetFixedWidth](#GetFixedWidth) | 获取固定宽度,对应 xml 中 width 属性 |\n| [SetFixedWidth](#SetFixedWidth) | 设置控件固定宽度 |\n| [GetFixedHeight](#GetFixedHeight) | 获取固定高度 |\n| [SetFixedHeight](#SetFixedHeight) | 设置固定高度 |\n| [GetMinWidth](#GetMinWidth) | 获取最小宽度 |\n| [SetMinWidth](#SetMinWidth) | 设置最小宽度 |\n| [GetMaxWidth](#GetMaxWidth) | 获取最大宽度 |\n| [SetMaxWidth](#SetMaxWidth) | 设置最大宽度 |\n| [GetMinHeight](#GetMinHeight) | 获取最小高度 |\n| [SetMinHeight](#SetMinHeight) | 设置最小高度 |\n| [GetMaxHeight](#GetMaxHeight) | 获取最大高度 |\n| [SetMaxHeight](#SetMaxHeight) | 设置最大高度 |\n| [GetWidth](#GetWidth) | 获取实际宽度 |\n| [GetHeight](#GetHeight) | 获取实际高度 |\n| [GetHorAlignType](#GetHorAlignType) | 获取水平对齐方式 |\n| [SetHorAlignType](#SetHorAlignType) | 设置水平对齐方式 |\n| [GetVerAlignType](#GetVerAlignType) | 获取垂直对齐方式 |\n| [SetVerAlignType](#SetVerAlignType) | 设置垂直对齐方式 |\n| [IsReEstimateSize](#IsReEstimateSize) | 待补充 |\n| [SetReEstimateSize](#SetReEstimateSize) | 待补充 |\n| [EstimateSize](#EstimateSize) | 待补充 |\n| [GetPos](#GetPos) | 获取控件位置 |\n| [SetPos](#SetPos) | 设置控件位置 |\n| [Arrange](#Arrange) | 进行布局 |\n| [ArrangeAncestor](#ArrangeAncestor) | 让父容器排列 |\n| [IsArranged](#IsArranged) | 判断是否已经排列过 |\n| [Invalidate](#Invalidate) | 重绘控件 |\n| [GetPosWithScrollOffset](#GetPosWithScrollOffset) | 待补充 |\n| [GetScrollOffset](#GetScrollOffset) | 待补充 |\n| [ArrangeSelf](#ArrangeSelf) | 待补充 |\n| [GetBkColor](#GetBkColor) | 获取背景颜色 |\n| [SetBkColor](#SetBkColor) | 设置背景颜色 |\n| [GetStateColor](#GetStateColor) | 获取某个状态下的字体颜色 |\n| [SetStateColor](#SetStateColor) | 设置某个状态下的字体颜色 |\n| [GetBkImage](#GetBkImage) | 获取背景图片位置 |\n| [GetUTF8BkImage](#GetUTF8BkImage) | 获取 UTF8 格式的背景图片位置 |\n| [SetBkImage](#SetBkImage) | 设置背景图片 |\n| [SetUTF8BkImage](#SetUTF8BkImage) | 设置背景图片(UTF8 格式字符串) |\n| [GetStateImage](#GetStateImage) | 获取指定状态下的图片位置 |\n| [SetStateImage](#SetStateImage) | 设置某个状态下的图片 |\n| [GetForeStateImage](#GetForeStateImage) | 获取指定状态下的前景图片 |\n| [SetForeStateImage](#SetForeStateImage) | 设置某个状态下前景图片 |\n| [GetState](#GetState) | 获取控件状态 |\n| [SetState](#SetState) | 设置控件状态 |\n| [GetEstimateImage](#GetEstimateImage) | 获取控件图片指针 |\n| [GetBorderSize](#GetBorderSize) | 获取边框大小 |\n| [SetBorderSize](#SetBorderSize) | 设置边框大小 |\n| [GetBorderColor](#GetBorderColor) | 获取边框颜色 |\n| [SetBorderColor](#SetBorderColor) | 设置边框颜色 |\n| [SetBorderSize](#SetBorderSize) | 设置边框的大小 |\n| [GetLeftBorderSize](#GetLeftBorderSize) | 获取左侧边框大小 |\n| [SetLeftBorderSize](#SetLeftBorderSize) | 设置左侧边框大小 |\n| [GetTopBorderSize](#GetTopBorderSize) | 获取顶部边框大小 |\n| [SetTopBorderSize](#SetTopBorderSize) | 设置顶部边框大小 |\n| [GetRightBorderSize](#GetRightBorderSize) | 获取右侧边框大小 |\n| [SetRightBorderSize](#SetRightBorderSize) | 设置右侧边框大小 |\n| [GetBottomBorderSize](#GetBottomBorderSize) | 获取下方边框大小 |\n| [SetBottomBorderSize](#SetBottomBorderSize) | 设置下方边框大小 |\n| [GetBorderRound](#GetBorderRound) | 获取边框大小 |\n| [SetBorderRound](#SetBorderRound) | 设置边框大小 |\n| [GetCursorType](#GetCursorType) | 获取鼠标指针类型 |\n| [SetCursorType](#SetCursorType) | 设置当前鼠标指针类型 |\n| [GetToolTipText](#GetToolTipText) | 获取控件在鼠标悬浮状态下的提示文本 |\n| [GetUTF8ToolTipText](#GetUTF8ToolTipText) | 获取控件在鼠标悬浮状态下的提示文本(UTF8 格式) |\n| [SetToolTipText](#SetToolTipText) | 设置鼠标悬浮到控件显示的提示文本 |\n| [SetUTF8ToolTipText](#SetUTF8ToolTipText) | 设置鼠标悬浮到控件显示的提示文本(UTF8 格式) |\n| [SetToolTipTextId](#SetToolTipTextId) | 设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字 |\n| [SetUTF8ToolTipTextId](#SetUTF8ToolTipTextId) | 设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字(UTF8 格式) |\n| [SetToolTipWidth](#SetToolTipWidth) | 设置鼠标悬浮到控件上提示的文本单行最大宽度 |\n| [GetToolTipWidth](#GetToolTipWidth) | 获取鼠标悬浮到控件上提示的文本单行最大宽度 |\n| [IsContextMenuUsed](#IsContextMenuUsed) | 控件是否响应右键菜单消息 |\n| [SetContextMenuUsed](#SetContextMenuUsed) | 设置控件响应右键菜单消息 |\n| [GetDataID](#GetDataID) | 获取用户绑定到控件的数据字符串 |\n| [GetUTF8DataID](#GetUTF8DataID) | 获取用户绑定到控件的数据字符串(UTF8 格式) |\n| [SetDataID](#SetDataID) | 绑定一个字符串数据到控件 |\n| [SetUTF8DataID](#SetUTF8DataID) | 绑定一个字符串数据到控件(UTF8 格式) |\n| [GetUserDataBase](#GetUserDataBase) | 获取用户绑定的自定义数据结构 |\n| [SetUserDataBase](#SetUserDataBase) | 绑定自定义数据到控件,用户可继承 UserDataBase 来补充需要绑定的数据 |\n| [SetVisible](#SetVisible) | 设置控件是否可见 |\n| [SetInternVisible](#SetInternVisible) | 待补充 |\n| [SetVisible_](#SetVisible_) | 待补充 |\n| [IsEnabled](#IsEnabled) | 检查控件是否可用 |\n| [SetEnabled](#SetEnabled) | 设置控件可用状态 |\n| [IsMouseEnabled](#IsMouseEnabled) | 检查控件是否响应鼠标事件 |\n| [SetMouseEnabled](#SetMouseEnabled) | 设置控件是否响应鼠标事件 |\n| [IsKeyboardEnabled](#IsKeyboardEnabled) | 检查控件是否响应键盘事件 |\n| [SetKeyboardEnabled](#SetKeyboardEnabled) | 设置控件是否响应键盘事件 |\n| [IsFocused](#IsFocused) | 检查控件是否具有焦点 |\n| [SetFocus](#SetFocus) | 让控件获取焦点 |\n| [SetNoFocus](#SetNoFocus) | 让控件设置永远获取不到焦点 |\n| [GetControlFlags](#GetControlFlags) | 返回控件的标识,用于判断是否可以响应 TAB 切换事件 |\n| [IsMouseFocused](#IsMouseFocused) | 判断当前鼠标焦点是否在控件上 |\n| [SetMouseFocused](#SetMouseFocused) | 设置是否将鼠标焦点到控件上 |\n| [IsActivatable](#IsActivatable) | 判断控件当前是否是激活状态 |\n| [Activate](#Activate) | 待补充 |\n| [FindControl](#FindControl) | 根据坐标查找指定控件 |\n| [GetPos](#GetPos) | 获取控件位置 |\n| [SetPos](#SetPos) | 设置控件位置 |\n| [GetMargin](#GetMargin) | 获取控件的外边距 |\n| [SetMargin](#SetMargin) | 设置控件的外边距 |\n| [EstimateSize](#EstimateSize) | 计算控件大小 |\n| [EstimateText](#EstimateText) | 待补充 |\n| [IsPointInWithScrollOffset](#IsPointInWithScrollOffset) | 检查指定坐标是否在滚动条当前滚动位置的范围内 |\n| [HasHotState](#HasHotState) | 判断控件是否处于 HOT 状态 |\n| [SetReceivePointerMsg](#SetReceivePointerMsg) | 设置控件是否响应触控消息 |\n| [IsReceivePointerMsg](#IsReceivePointerMsg) | 判断控件是否响应触控消息 |\n| [SetNeedButtonUpWhenKillFocus](#SetNeedButtonUpWhenKillFocus) | 设置控件失去焦点时是否发送鼠标弹起消息 |\n| [IsNeedButtonUpWhenKillFocus](#IsNeedButtonUpWhenKillFocus) | 判断控件失去焦点时是否发送鼠标弹起消息 |\n| [SetAttribute](#SetAttribute) | 设置控件指定属性 |\n| [SetClass](#SetClass) | 设置控件的 class 全局属性 |\n| [ApplyAttributeList](#ApplyAttributeList) | 应用一套属性列表 |\n| [OnApplyAttributeList](#OnApplyAttributeList) | 待补充 |\n| [HandleMessageTemplate](#HandleMessageTemplate) | 控件统一的消息处理入口,将传统 Windows 消息转换为自定义格式的消息 |\n| [HandleMessageTemplate](#HandleMessageTemplate) | 将转换后的消息派发到消息处理函数 |\n| [GetImage](#GetImage) | 根据图片路径缓存图片信息 |\n| [DrawImage](#DrawImage) | 绘制图片 |\n| [GetRenderContext](#GetRenderContext) | 获取绘制上下文对象 |\n| [ClearRenderContext](#ClearRenderContext) | 清理绘制上下文对象 |\n| [AlphaPaint](#AlphaPaint) | 待补充 |\n| [Paint](#Paint) | 绘制控件的入口函数 |\n| [PaintChild](#PaintChild) | 绘制控件子项入口函数 |\n| [SetClip](#SetClip) | 设置是否对绘制范围做剪裁限制 |\n| [IsClip](#IsClip) | 判断是否对绘制范围做剪裁限制 |\n| [SetAlpha](#SetAlpha) | 设置控件透明度 |\n| [GetAlpha](#GetAlpha) | 获取控件透明度 |\n| [IsAlpha](#IsAlpha) | 检查控件是否有透明属性 |\n| [SetHotAlpha](#SetHotAlpha) | 设置焦点状态透明度 |\n| [GetHotAlpha](#GetHotAlpha) | 获取焦点状态透明度 |\n| [GetRenderOffset](#GetRenderOffset) | 获取控件绘制偏移量 |\n| [SetRenderOffset](#SetRenderOffset) | 设置控件绘制偏移量 |\n| [SetRenderOffsetX](#SetRenderOffsetX) | 设置控件偏移的 X 坐标 |\n| [SetRenderOffsetY](#SetRenderOffsetY) | 设置控件偏移的 Y 坐标 |\n| [StartGifPlayForUI](#StartGifPlayForUI) | 播放 GIF |\n| [StopGifPlayForUI](#StopGifPlayForUI) | 停止播放 GIF |\n| [AttachGifPlayStop](#AttachGifPlayStop) | 监听 GIF 播放完成通知 |\n\n## GetParent\n\n获取父容器指针\n\n```cpp\nBox* GetParent()\n```\n\n - 参 数:无 \n - 返回值:返回父容器指针\n \n## GetAncestor\n\n根据名称获取祖先容器指针\n\n```cpp\nBox* GetAncestor(const std::wstring& strName)\n```\n\n - 参 数: \n - `strName` 要获取的祖先容器名称\n - 返回值:返回祖先容器指针\n\n## GetName\n\n获取控件名称,对应 xml 中 name 属性\n\n```cpp\nstd::wstring GetName()\n```\n\n - 参 数:无 \n - 返回值:返回控件名称\n\n## GetUTF8Name\n\n获取控件名称,对应 xml 中 name 属性\n\n```cpp\nstd::string GetUTF8Name()\n```\n\n - 参 数:无 \n - 返回值:返回控件名称(UTF8 编码)\n\n## SetName\n\n设置控件名称,内存中设置不会写入 xml 中\n\n```cpp\nvoid SetName(const std::wstring& strName)\n```\n\n - 参 数: \n - `strName` 要设置的名称\n - 返回值:无\n\n## SetUTF8Name\n\n设置控件名称,内存中设置不会写入 xml 中(UTF8 编码)\n\n```cpp\nvoid SetUTF8Name(const std::string& strName)\n```\n\n - 参 数: \n - `strName` 要设置的名称\n - 返回值:无\n\n## GetWindow\n\n获取关联的窗口指针\n\n```cpp\nvirtual Window* GetWindow()\n```\n\n - 参 数:无 \n - 返回值:返回关联窗口的指针\n\n## SetWindow\n\n设置容器所属窗口\n\n```cpp\nvirtual void SetWindow(Window* pManager, Box* pParent, bool bInit = true)\n```\n\n - 参 数: \n - `pManager` 窗口指针\n - `pParent` 父容器\n - `bInit` 设置后是否调用 Init 初始化控件\n - 返回值:无\n\n## SetWindow\n\n设置容器所属窗口\n\n```cpp\nvirtual void SetWindow(Window* pManager)\n```\n\n - 参 数: \n - `pManager` 窗口指针\n - 返回值:无\n\n## Init\n\n初始化函数\n\n```cpp\nvirtual void Init()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## DoInit\n\n由 Init 调用,功能与 Init 相同\n\n```cpp\nvirtual void DoInit()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## IsVisible\n\n判断是否可见\n\n```cpp\nvirtual bool IsVisible()\n```\n\n - 参 数:无 \n - 返回值:返回 true 为可见,否则 false 为不可见\n\n## IsInternVisible\n\n待补充\n\n```cpp\nbool IsInternVisible()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## IsFloat\n\n判断控件是否浮动,对应 xml 中 float 属性\n\n```cpp\nbool IsFloat()\n```\n\n - 参 数:无 \n - 返回值:返回 true 是浮动状态,否则 false 为非浮动状态\n\n## SetFloat\n\n设置控件是否浮动\n\n```cpp\nvoid SetFloat(bool bFloat = true)\n```\n\n - 参 数: \n - `bFloat` 设置为 true 为浮动,false 为不浮动\n - 返回值:无\n\n## GetFixedWidth\n\n获取固定宽度,对应 xml 中 width 属性\n\n```cpp\nint GetFixedWidth()\n```\n\n - 参 数:无 \n - 返回值:返回控件宽度\n\n## SetFixedWidth\n\n设置控件固定宽度\n\n```cpp\nvoid SetFixedWidth(int cx, bool bArrange = true, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `cx` 要设置的宽度\n - `bArrange` 是否重新排列,默认为 true\n - `bNeedDpiScale` 兼容 DPI 缩放,默认为 true\n - 返回值:无\n\n## GetFixedHeight\n\n获取固定高度\n\n```cpp\nint GetFixedHeight()\n```\n\n - 参 数:无 \n - 返回值:返回固定高度\n\n## SetFixedHeight\n\n设置固定高度\n\n```cpp\nvoid SetFixedHeight(int cy, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `cy` 要设置的固定高度\n - `bNeedDpiScale` 兼容 DPI 缩放,默认为 true\n - 返回值:无\n\n## GetMinWidth\n\n获取最小宽度\n\n```cpp\nint GetMinWidth()\n```\n\n - 参 数:无 \n - 返回值:返回最小宽度\n\n## SetMinWidth\n\n设置最小宽度\n\n```cpp\nvoid SetMinWidth(int cx)\n```\n\n - 参 数: \n - `cx` 要设置的最小宽度\n - 返回值:无\n\n## GetMaxWidth\n\n获取最大宽度\n\n```cpp\nint GetMaxWidth()\n```\n\n - 参 数:无 \n - 返回值:返回最大宽度\n\n## SetMaxWidth\n\n设置最大宽度\n\n```cpp\nvoid SetMaxWidth(int cx)\n```\n\n - 参 数: \n - `cx` 要设置的最大宽度\n - 返回值:无\n\n## GetMinHeight\n\n获取最小高度\n\n```cpp\nint GetMinHeight()\n```\n\n - 参 数:无 \n - 返回值:返回最小高度\n\n## SetMinHeight\n\n设置最小高度\n\n```cpp\nvoid SetMinHeight(int cy)\n```\n\n - 参 数: \n - `cy` 要设置的最小高度\n - 返回值:无\n\n## GetMaxHeight\n\n获取最大高度\n\n```cpp\nint GetMaxHeight()\n```\n\n - 参 数:无 \n - 返回值:返回最大高度\n\n## SetMaxHeight\n\n设置最大高度\n\n```cpp\nvoid SetMaxHeight(int cy)\n```\n\n - 参 数: \n - `cy` 要设置的最大高度\n - 返回值:无\n\n## GetWidth\n\n获取实际宽度\n\n```cpp\nint GetWidth()\n```\n\n - 参 数:无 \n - 返回值:返回实际宽度\n\n## GetHeight\n\n获取实际高度\n\n```cpp\nint GetHeight()\n```\n\n - 参 数:无 \n - 返回值:返回实际高度\n\n## GetHorAlignType\n\n获取水平对齐方式\n\n```cpp\nHorAlignType GetHorAlignType()\n```\n\n - 参 数:无 \n - 返回值:返回水平对齐方式,参考 HorAlignType 枚举\n\n## SetHorAlignType\n\n设置水平对齐方式\n\n```cpp\nvoid SetHorAlignType(HorAlignType horAlignType)\n```\n\n - 参 数: \n - `horAlignType` 要设置的对齐方式,参考 枚举\n - 返回值:无\n\n## GetVerAlignType\n\n获取垂直对齐方式\n\n```cpp\nVerAlignType GetVerAlignType()\n```\n\n - 参 数:无 \n - 返回值:返回垂直对齐方式,参见 VerAlignType 枚举\n\n## SetVerAlignType\n\n设置垂直对齐方式\n\n```cpp\nvoid SetVerAlignType(VerAlignType verAlignType)\n```\n\n - 参 数: \n - `vorAlignType` 要设置的对齐方式,参考 VerAlignType 枚举\n - 返回值:无\n\n## IsReEstimateSize\n\n待补充\n\n```cpp\nbool IsReEstimateSize()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## SetReEstimateSize\n\n待补充\n\n```cpp\nvoid SetReEstimateSize(bool bReEstimateSize)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## EstimateSize\n\n待补充\n\n```cpp\nvirtual CSize EstimateSize(CSize szAvailable)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## GetPos\n\n获取控件位置\n\n```cpp\nvirtual UiRect GetPos(bool bContainShadow = true)\n```\n\n - 参 数: \n - `bContainShadow` 是否包含阴影位置,默认为 true\n - 返回值:返回控件位置\n\n## SetPos\n\n设置控件位置\n\n```cpp\nvirtual void SetPos(UiRect rc)\n```\n\n - 参 数: \n - `rc` 要设置的位置信息\n - 返回值:无\n\n## Arrange\n\n进行布局\n\n```cpp\nvirtual void Arrange()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## ArrangeAncestor\n\n让父容器排列\n\n```cpp\nvirtual void ArrangeAncestor()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## IsArranged\n\n判断是否已经排列过\n\n```cpp\nbool IsArranged()\n```\n\n - 参 数:无 \n - 返回值:true 为已经排列过,false 为尚未排列\n\n## Invalidate\n\n重绘控件\n\n```cpp\nvirtual void Invalidate()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## GetPosWithScrollOffset\n\n待补充\n\n```cpp\nUiRect GetPosWithScrollOffset()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## GetScrollOffset\n\n待补充\n\n```cpp\nCPoint GetScrollOffset()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## ArrangeSelf\n\n待补充\n\n```cpp\nvirtual void ArrangeSelf()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### GetBkColor\n\n获取背景颜色\n\n```cpp\nstd::wstring GetBkColor()\n```\n\n - 参 数:无 \n - 返回值:返回背景颜色的字符串,该值在 global.xml 中定义\n\n### SetBkColor\n\n设置背景颜色\n\n```cpp\nvoid SetBkColor(const std::wstring& strColor)\n```\n\n - 参 数: \n - `strColor` 要设置的背景颜色值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### GetStateColor\n\n获取某个状态下的字体颜色\n\n```cpp\nstd::wstring GetStateColor(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的颜色值,参考 Control枚举\n - 返回值:指定状态下设定的颜色字符串,对应 global.xml 中指定色值\n\n### SetStateColor\n\n设置某个状态下的字体颜色\n\n```cpp\nvoid SetStateColor(ControlStateType stateType, const std::wstring& strColor)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的颜色值,参考 Control枚举\n - `strColor` 要设置的颜色值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### GetBkImage\n\n获取背景图片位置\n\n```cpp\nstd::wstring GetBkImage()\n```\n\n - 参 数:无 \n - 返回值:背景图片位置 \n\n### GetUTF8BkImage\n\n获取 UTF8 格式的背景图片位置\n\n```cpp\nstd::string GetUTF8BkImage()\n```\n\n - 参 数:无 \n - 返回值:背景图片位置\n\n### SetBkImage\n\n设置背景图片\n\n```cpp\nvoid SetBkImage(const std::wstring& strImage)\n```\n\n - 参 数: \n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### SetUTF8BkImage\n\n设置背景图片(UTF8 格式字符串)\n\n```cpp\nvoid SetUTF8BkImage(const std::string& strImage)\n```\n\n - 参 数: \n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### GetStateImage\n\n获取指定状态下的图片位置\n\n```cpp\nstd::wstring GetStateImage(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的图片,参考 `ControlStateType` 枚举\n - 返回值:指定状态下的图片位置\n\n### SetStateImage\n\n设置某个状态下的图片\n\n```cpp\nvoid SetStateImage(ControlStateType stateType, const std::wstring& strImage)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的图片,参考 Control枚举\n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### GetForeStateImage\n\n获取指定状态下的前景图片\n\n```cpp\nstd::wstring GetForeStateImage(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的图片,参考 `ControlStateType` 枚举\n - 返回值:指定状态下前景图片位置\n\n### SetForeStateImage\n\n设置某个状态下前景图片\n\n```cpp\nvoid SetForeStateImage(ControlStateType stateType, const std::wstring& strImage)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的图片,参考 `ControlStateType` 枚举\n - `strImage` 要设置的前景图片路径\n - 返回值:无\n\n### GetState\n\n获取控件状态\n\n```cpp\nControlStateType GetState()\n```\n\n - 参 数:无 \n - 返回值:控件的状态,请参考 `ControlStateType` 枚举\n\n### SetState\n\n设置控件状态\n\n```cpp\nvoid SetState(ControlStateType pStrState)\n```\n\n - 参 数: \n - `pStrState` 要设置的控件状态,请参考 `ControlStateType` 枚举\n - 返回值:无\n\n### GetEstimateImage\n\n获取控件图片指针\n\n```cpp\nvirtual Image* GetEstimateImage()\n```\n\n - 参 数:无 \n - 返回值:返回图片对象指针\n\n### GetBorderSize\n\n获取边框大小\n\n```cpp\nint GetBorderSize()\n```\n\n - 参 数:无 \n - 返回值:返回边框的大小\n\n### SetBorderSize\n\n设置边框大小\n\n```cpp\nvoid SetBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的边框大小\n - 返回值:无\n\n### GetBorderColor\n\n获取边框颜色\n\n```cpp\nstd::wstring GetBorderColor()\n```\n\n - 参 数:无 \n - 返回值:边框的颜色字符串,对应 global.xml 中的具体颜色值\n\n### SetBorderColor\n\n设置边框颜色\n\n```cpp\nvoid SetBorderColor(const std::wstring& strBorderColor)\n```\n\n - 参 数: \n - `strBorderColor` 设置边框的颜色字符串值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### SetBorderSize\n\n设置边框的大小\n\n```cpp\nvoid SetBorderSize(UiRect rc)\n```\n\n - 参 数: \n - `rc` 一个 `UiRect` 结构的边框大小集合\n - 返回值:无\n\n### GetLeftBorderSize\n\n获取左侧边框大小\n\n```cpp\nint GetLeftBorderSize()\n```\n\n - 参 数:无 \n - 返回值:左侧边框的大小 \n\n### SetLeftBorderSize\n\n设置左侧边框大小\n\n```cpp\nvoid SetLeftBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的左侧边框大小\n - 返回值:无\n\n### GetTopBorderSize\n\n获取顶部边框大小\n\n```cpp\nint GetTopBorderSize()\n```\n\n - 参 数:无 \n - 返回值:顶部边框大小\n\n### SetTopBorderSize\n\n设置顶部边框大小\n\n```cpp\nvoid SetTopBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的上方边框大小\n - 返回值:无\n\n### GetRightBorderSize\n\n获取右侧边框大小\n\n```cpp\nint GetRightBorderSize()\n```\n\n - 参 数:无 \n - 返回值:右侧的边框大小\n\n### SetRightBorderSize\n\n设置右侧边框大小\n\n```cpp\nvoid SetRightBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的右侧边框大小\n - 返回值:无\n\n### GetBottomBorderSize\n\n获取下方边框大小\n\n```cpp\nint GetBottomBorderSize()\n```\n\n - 参 数:无 \n - 返回值:下方边框大小\n\n### SetBottomBorderSize\n\n设置下方边框大小\n\n```cpp\nvoid SetBottomBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的下方边框大小\n - 返回值:无\n\n### GetBorderRound\n\n获取边框大小\n\n```cpp\nCSize GetBorderRound()\n```\n\n - 参 数:无 \n - 返回值:四个方向的边框大小\n\n### SetBorderRound\n\n设置边框大小\n\n```cpp\nvoid SetBorderRound(CSize cxyRound)\n```\n\n - 参 数: \n - `cxyRound` 一个 CSize 结构表示了四个方向边框的大小\n - 返回值:无\n\n### GetCursorType\n\n获取鼠标指针类型\n\n```cpp\nvirtual CursorType GetCursorType()\n```\n\n - 参 数:无 \n - 返回值:当前鼠标类型\n\n### SetCursorType\n\n设置当前鼠标指针类型\n\n```cpp\nvoid SetCursorType(CursorType flag)\n```\n\n - 参 数: \n - `flag` 要设置的鼠标类型,参考 CursorType 枚举\n - 返回值:无\n\n### GetToolTipText\n\n获取控件在鼠标悬浮状态下的提示文本\n\n```cpp\nvirtual std::wstring GetToolTipText()\n```\n\n - 参 数:无 \n - 返回值:返回当前鼠标悬浮状态提示的文本\n\n### GetUTF8ToolTipText\n\n获取控件在鼠标悬浮状态下的提示文本(UTF8 格式)\n\n```cpp\nvirtual std::string GetUTF8ToolTipText()\n```\n\n - 参 数:无 \n - 返回值:返回当前鼠标悬浮状态提示的文本\n\n### SetToolTipText\n\n设置鼠标悬浮到控件显示的提示文本\n\n```cpp\nvirtual void SetToolTipText(const std::wstring& strText)\n```\n\n - 参 数: \n - `strText` 要设置的文本\n - 返回值:无\n\n### SetUTF8ToolTipText\n\n设置鼠标悬浮到控件显示的提示文本(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8ToolTipText(const std::string& strText)\n```\n\n - 参 数: \n - `strText` 要设置的文本\n - 返回值:无\n\n### SetToolTipTextId\n\n设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字\n\n```cpp\nvirtual void SetToolTipTextId(const std::wstring& strTextId)\n```\n\n - 参 数: \n - `strTextId` 在语言文件中对应的提示文字 ID\n - 返回值:无\n\n### SetUTF8ToolTipTextId\n\n设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8ToolTipTextId(const std::string& strTextId)\n```\n\n - 参 数: \n - `strTextId` 在语言文件中对应的提示文字 ID\n - 返回值:无\n\n### SetToolTipWidth\n\n设置鼠标悬浮到控件上提示的文本单行最大宽度\n\n```cpp\nvirtual void SetToolTipWidth(int nWidth)\n```\n\n - 参 数: \n - `nWidth` 要设置的宽度值\n - 返回值:无\n\n### GetToolTipWidth\n\n获取鼠标悬浮到控件上提示的文本单行最大宽度\n\n```cpp\nvirtual int GetToolTipWidth(void)\n```\n\n - 参 数:无 \n - 返回值:当前提示文本最大宽度\n\n### IsContextMenuUsed\n\n控件是否响应右键菜单消息\n\n```cpp\nvirtual bool IsContextMenuUsed()\n```\n\n - 参 数:无 \n - 返回值:返回结果表示了是否响应右键菜单消息,true 响应右键菜单消息,false 不响应右键菜单消息\n\n### SetContextMenuUsed\n\n设置控件响应右键菜单消息\n\n```cpp\nvirtual void SetContextMenuUsed(bool bMenuUsed)\n```\n\n - 参 数: \n - `bMenuUsed` 是否响应右键菜单消息,true 为是,false 为否\n - 返回值:无\n\n### GetDataID\n\n获取用户绑定到控件的数据字符串\n\n```cpp\nvirtual std::wstring GetDataID()\n```\n\n - 参 数:无 \n - 返回值:返回具体数据字符串\n\n### GetUTF8DataID\n\n获取用户绑定到控件的数据字符串(UTF8 格式)\n\n```cpp\nvirtual std::string GetUTF8DataID()\n```\n\n - 参 数:无 \n - 返回值:返回具体数据字符串\n\n### SetDataID\n\n绑定一个字符串数据到控件\n\n```cpp\nvirtual void SetDataID(const std::wstring& strText)\n```\n\n - 参 数: \n - `strText` 要绑定的字符串数据\n - 返回值:无\n\n### SetUTF8DataID\n\n绑定一个字符串数据到控件(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8DataID(const std::string& strText)\n```\n\n - 参 数: \n - `strText` 要绑定的字符串数据\n - 返回值:无\n\n### GetUserDataBase\n\n获取用户绑定的自定义数据结构\n\n```cpp\nvirtual UserDataBase* GetUserDataBase()\n```\n\n - 参 数:无 \n - 返回值:用户绑定的自定义结构数据指针\n\n### SetUserDataBase\n\n绑定自定义数据到控件,用户可继承 UserDataBase 来补充需要绑定的数据\n\n```cpp\nvirtual void SetUserDataBase(UserDataBase* pUserDataBase)\n```\n\n - 参 数: \n - `pUserDataBase` 数据指针\n - 返回值:无\n\n### SetVisible\n\n设置控件是否可见\n\n```cpp\nvirtual void SetVisible(bool bVisible = true)\n```\n\n - 参 数: \n - `bVisible` 为 true 时控件可见,为 false 时控件被隐藏\n - 返回值:无\n\n### SetInternVisible\n\n待补充\n\n```cpp\nvirtual void SetInternVisible(bool bVisible = true)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### SetVisible_\n\n待补充\n\n```cpp\nvirtual void SetVisible_(bool bVisible)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### IsEnabled\n\n检查控件是否可用\n\n```cpp\nvirtual bool IsEnabled()\n```\n\n - 参 数:无 \n - 返回值:控件可用状态,返回 true 控件可用,否则为 false\n\n### SetEnabled\n\n设置控件可用状态\n\n```cpp\nvirtual void SetEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 时控件可用,为 false 时控件为禁用状态则不可用\n - 返回值:无\n\n### IsMouseEnabled\n\n检查控件是否响应鼠标事件\n\n```cpp\nvirtual bool IsMouseEnabled()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否响应鼠标事件,返回 true 响应鼠标事件,false 为不响应\n\n### SetMouseEnabled\n\n设置控件是否响应鼠标事件\n\n```cpp\nvirtual void SetMouseEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 响应鼠标事件,为 false 时不响应鼠标事件\n - 返回值:无\n\n### IsKeyboardEnabled\n\n检查控件是否响应键盘事件\n\n```cpp\nvirtual bool IsKeyboardEnabled()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否响应键盘事件,返回 true 响应键盘事件,false 不响应键盘事件\n\n### SetKeyboardEnabled\n\n设置控件是否响应键盘事件\n\n```cpp\nvirtual void SetKeyboardEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 响应键盘事件,为 false 时不响应键盘事件\n - 返回值:无\n\n### IsFocused\n\n检查控件是否具有焦点\n\n```cpp\nvirtual bool IsFocused()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否具有检点,为 true 时是当前具有焦点,为 false 时控件没有焦点\n\n### SetFocus\n\n让控件获取焦点\n\n```cpp\nvirtual void SetFocus()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### SetNoFocus\n\n让控件设置永远获取不到焦点\n\n```cpp\nvoid SetNoFocus()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### GetControlFlags\n\n返回控件的标识,用于判断是否可以响应 TAB 切换事件\n\n```cpp\nvirtual UINT GetControlFlags() const\n```\n\n - 参 数:无 \n - 返回值:返回控件的标识类型,`UIFLAG_DEFAULT` 为默认状态不支持焦点切换,`UIFLAG_TABSTOP` 为支持焦点切换\n\n### IsMouseFocused\n\n判断当前鼠标焦点是否在控件上\n\n```cpp\nvirtual bool IsMouseFocused()\n```\n\n - 参 数:无 \n - 返回值:返回鼠标焦点是否在控件上,true 鼠标焦点在控件上,false 鼠标焦点不在控件上\n\n### SetMouseFocused\n\n设置是否将鼠标焦点到控件上\n\n```cpp\nvirtual void SetMouseFocused(bool bMouseFocused)\n```\n\n - 参 数: \n - `bMouseFocused` 为 true 时设置鼠标焦点到控件上,为 false 时让控件失去鼠标焦点\n - 返回值:无\n\n### IsActivatable\n\n判断控件当前是否是激活状态\n\n```cpp\nvirtual bool IsActivatable()\n```\n\n - 参 数:无 \n - 返回值:返回控件状态,true 控件当前是激活状态,可见并可用,false 控件当前非激活状态,可能不可见或被禁用\n\n### Activate\n\n待补充\n\n```cpp\nvirtual void Activate()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### FindControl\n\n根据坐标查找指定控件\n\n```cpp\nvirtual Control* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags, CPoint scrollPos = CPoint()\n```\n\n - 参 数: \n - `Proc\n - `pData\n - `uFlags\n - `scrollPos\n - 返回值:返回控件的指针\n\n### GetPos\n\n获取控件位置\n\n```cpp\nvirtual UiRect GetPos(bool bContainShadow = true)\n```\n\n - 参 数: \n - `bContainShadow` 是否包含阴影,默认为 true 则包含阴影范围,否则 false 为不包含\n - 返回值:返回控件的位置信息\n\n### SetPos\n\n设置控件位置\n\n```cpp\nvirtual void SetPos(UiRect rc)\n```\n\n - 参 数: \n - `rc` 控件位置的描述信息\n - 返回值:无\n\n### GetMargin\n\n获取控件的外边距\n\n```cpp\nvirtual UiRect GetMargin()\n```\n\n - 参 数:无 \n - 返回值:返回控件的外边距\n\n### SetMargin\n\n设置控件的外边距\n\n```cpp\nvirtual void SetMargin(UiRect rcMargin, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `rcMargin` 控件的外边距信息\n - `bNeedDpiScale` 是否让外边距根据 DPI 适配,默认为 true,false 不适配 DPI\n - 返回值:无\n\n### EstimateSize\n\n计算控件大小\n\n```cpp\nvirtual CSize EstimateSize(CSize szAvailable)\n```\n\n - 参 数: \n - `szAvailable` 暂无意义\n - 返回值:szAvailable 控件实际大小(如果设置了图片并设置 width 或 height 任意一项为 auto,将根据图片来计算最终大小)\n\n### EstimateText\n\n待补充\n\n```cpp\nvirtual CSize EstimateText(CSize szAvailable, bool& bReEstimateSize)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### IsPointInWithScrollOffset\n\n检查指定坐标是否在滚动条当前滚动位置的范围内\n\n```cpp\nvirtual bool IsPointInWithScrollOffset(const CPoint& point)\n```\n\n - 参 数: \n - `point` 具体坐标\n - 返回值:返回是否在范围内,true 在滚动条当前滚动位置范围内,false 不在滚动条当前滚动位置范围内\n\n### HasHotState\n\n判断控件是否处于 HOT 状态\n\n```cpp\nvirtual bool HasHotState()\n```\n\n - 参 数:无 \n - 返回值:返回 true 表示当前处于 HOT 状态, 否则为 false\n\n### SetReceivePointerMsg\n\n设置控件是否响应触控消息\n\n```cpp\nvoid SetReceivePointerMsg(bool bRecv)\n```\n\n - 参 数: \n - `bRecv` 设置为 true 表示响应触控消息,false 为不响应\n - 返回值:无\n\n### IsReceivePointerMsg\n\n判断控件是否响应触控消息\n\n```cpp\nbool IsReceivePointerMsg() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为响应,否则为 false\n\n### SetNeedButtonUpWhenKillFocus\n\n设置控件失去焦点时是否发送鼠标弹起消息\n\n```cpp\nvoid SetNeedButtonUpWhenKillFocus(bool bNeed)\n```\n\n - 参 数: \n - `bNeed` bNeed 设置为 true 表示响应触控消息,false 为不响应\n - 返回值:无\n\n### IsNeedButtonUpWhenKillFocus\n\n判断控件失去焦点时是否发送鼠标弹起消息\n\n```cpp\nbool IsNeedButtonUpWhenKillFocus() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为需要,false 为不需要\n\n### SetAttribute\n\n设置控件指定属性\n\n```cpp\nvirtual void SetAttribute(const std::wstring& strName, const std::wstring& strValue)\n```\n\n - 参 数: \n - `strName` 要设置的属性名称(如 width)\n - `strValue` 要设置的属性值(如 100)\n - 返回值:无\n\n### SetClass\n\n设置控件的 class 全局属性\n\n```cpp\nvoid SetClass(const std::wstring& strClass)\n```\n\n - 参 数: \n - `strClass` 要设置的 class 名称,该名称必须在 global.xml 中存在\n - 返回值:无\n\n### ApplyAttributeList\n\n应用一套属性列表\n\n```cpp\nvoid ApplyAttributeList(const std::wstring& strList)\n```\n\n - 参 数: \n - `strList` 属性列表的字符串表示,如 `width=\"100\" height=\"30\"`\n - 返回值:无\n\n### OnApplyAttributeList\n\n待补充\n\n```cpp\nbool OnApplyAttributeList(const std::wstring& strReceiver, const std::wstring& strList, EventArgs* eventArgs)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### HandleMessageTemplate\n\n控件统一的消息处理入口,将传统 Windows 消息转换为自定义格式的消息\n\n```cpp\nvoid HandleMessageTemplate(EventType eventType, WPARAM wParam = 0, LPARAM lParam = 0, TCHAR tChar = 0, CPoint mousePos = CPoint()\n```\n\n - 参 数: \n - `eventType 消息内容\n - `wParam 消息附加内容\n - `lParam 消息附加内容\n - `tChar 按键信息\n - `mousePos 鼠标信息\n - 返回值:无\n\n### HandleMessageTemplate\n\n将转换后的消息派发到消息处理函数\n\n```cpp\nvirtual void HandleMessageTemplate(EventArgs& msg)\n```\n\n - 参 数: \n - `msg` 消息内容\n - 返回值:无\n\n### GetImage\n\n根据图片路径缓存图片信息\n\n```cpp\nvoid GetImage(Image& duiImage)\n```\n\n - 参 数:无 \n - 返回值:无\n\n### DrawImage\n\n绘制图片\n\n```cpp\nbool DrawImage(IRenderContext* pRender, Image& duiImage, const std::wstring& strModify = L\"\", int nFade = DUI_NOSET_VALUE)\n```\n\n - 参 数: \n - `pRender` 绘制上下文\n - `duiImage` 图片对象\n - `strModify` 图片的附加属性\n - `nFade` 控件的透明度,如果启用动画效果该值在绘制时是不断变化的\n - 返回值:成功返回 true,失败返回 false\n\n### AlphaPaint\n\n待补充\n\n```cpp\nvoid AlphaPaint(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n \n### GetRenderContext\n\n获取绘制上下文对象\n\n```cpp\nIRenderContext* GetRenderContext()\n```\n\n - 参 数:无 \n - 返回值:返回绘制上下文对象\n\n### ClearRenderContext\n\n清理绘制上下文对象\n\n```cpp\nvoid ClearRenderContext()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### Paint\n\n绘制控件的入口函数\n\n```cpp\nvirtual void Paint(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `pRender` 指定绘制区域\n - `rcPaint` 指定绘制坐标\n - 返回值:无\n \n### PaintChild\n\n绘制控件子项入口函数\n\n```cpp\nvirtual void PaintChild(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `pRender` 指定绘制区域\n - `rcPaint` 指定绘制坐标\n - 返回值:无\n \n### SetClip\n\n设置是否对绘制范围做剪裁限制\n\n```cpp\nvoid SetClip(bool clip)\n```\n\n - 参 数: \n - `clip` 设置 true 为需要,否则为不需要,见绘制函数\n - 返回值:无\n\n### IsClip\n\n判断是否对绘制范围做剪裁限制\n\n```cpp\nbool IsClip() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为需要,false 为不需要\n\n### SetAlpha\n\n设置控件透明度\n\n```cpp\nvoid SetAlpha(int alpha)\n```\n\n - 参 数: \n - `alpha` 0 ~ 255 的透明度值,255 为不透明\n - 返回值:无\n\n### GetAlpha\n\n获取控件透明度\n\n```cpp\nint GetAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件的透明度\n\n### IsAlpha\n\n检查控件是否有透明属性\n\n```cpp\nbool IsAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否透明,true 控件当前有透明属性,false 控件没有透明属性\n\n### SetHotAlpha\n\n设置焦点状态透明度\n\n```cpp\nvoid SetHotAlpha(int nHotAlpha)\n```\n\n - 参 数: \n - `alpha` 0 ~ 255 的透明度值,255 为不透明\n - 返回值:无\n\n### GetHotAlpha\n\n获取焦点状态透明度\n\n```cpp\nint GetHotAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件焦点状态的透明度\n\n### GetRenderOffset\n\n获取控件绘制偏移量\n\n```cpp\nCPoint GetRenderOffset()\n```\n\n - 参 数:无 \n - 返回值:返回当前控件的绘制偏移量\n\n### SetRenderOffset\n\n设置控件绘制偏移量\n\n```cpp\nvoid SetRenderOffset(CPoint renderOffset)\n```\n\n - 参 数: \n - `renderOffset` 控件偏移数据\n - 返回值:无\n\n### SetRenderOffsetX\n\n设置控件偏移的 X 坐标\n\n```cpp\nvoid SetRenderOffsetX(int renderOffsetX)\n```\n\n - 参 数: \n - `renderOffsetX` X 坐标值\n - 返回值:无\n\n### SetRenderOffsetY\n\n设置控件偏移的 Y 坐标\n\n```cpp\nvoid SetRenderOffsetY(int renderOffsetY)\n```\n\n - 参 数: \n - `renderOffsetY` Y 坐标值\n - 返回值:无\n\n### StartGifPlayForUI\n\n播放 GIF\n\n```cpp\nvoid StartGifPlayForUI(GifStopType frame = kGifStopFirst,int playcount = -1)\n```\n\n - 参 数: \n - `playcount` 播放完成停止在哪一帧,可设置第一帧、当前帧和最后一帧。请参考 GifStopType 枚举\n - 返回值:无\n\n### StopGifPlayForUI\n\n停止播放 GIF\n\n```cpp\nvoid StopGifPlayForUI(bool transfer = false, GifStopType frame = kGifStopCurrent)\n```\n\n - 参 数: \n - `transfer` 是否将停止事件通知给订阅者,参考 AttachGifPlayStop 方法\n - `frame` 播放结束停止在哪一帧,可设置第一帧、当前帧和最后一帧。请参考 GifStopType 枚举\n - 返回值:无\n\n### AttachGifPlayStop\n\n监听 GIF 播放完成通知\n\n```cpp\nvoid AttachGifPlayStop(const EventCallback& callback)\n```\n\n - 参 数: \n - `callback` 要监听 GIF 停止播放的回调函数\n - 返回值:无\n\n -->
Control(基础控件) 历史版本:
上次修改时间:
\n\n```\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| class | | STRING | 控件样式,用样式里面的属性值来设置本控件的属性,如(btn_default),可以同时指定多个样式,各个样式之间用空格分隔,需要写在第一个属性位置, |\n| name | | STRING | 控件名字,同一窗口内必须唯一,如(testbtn) |\n| halign | left | STRING | 控件的横向位置,如(center),支持left、center、right三种位置 |\n| valign | top | STRING | 控件的纵向位置,如(center),支持top、center、bottom三种位置 |\n| margin | 0,0,0,0 | RECT | 外边距,如(2,2,2,2) |\n| bkcolor | | STRING | 背景颜色字符串常量,如(white) |\n| bkcolor1 | | STRING | 背景渐变色1,和bkcolor配合使用,如(blue) |\n| normalcolor | | STRING | 普通状态颜色,如(white) |\n| hotcolor | | STRING | 悬浮状态颜色,如(white) |\n| pushedcolor | | STRING | 按下状态颜色,如(white) |\n| disabledcolor | | STRING | 禁用状态颜色,如(white) |\n| bordercolor | | STRING | 边框颜色,如(blue) |\n| bordersize | 0 | INT / RECT | 可以设置INT或RECT类型的值。当值为ING时则左、上、右、下都用该值作为宽。值为RECT类型时则分别设置左、上、右、下的边框 |\n| leftbordersize | 0 | INT | 左边边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| topbordersize | 0 | INT | 顶部边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| rightbordersize | 0 | INT | 右边边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| bottombordersize | 0 | INT | 底部边框大小,如(1),设置该值大于0,则将忽略bordersize属性的设置 |\n| borderround | 0,0 | SIZE | 边框圆角半径,如(2,2) |\n| width | stretch | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小宽度,如(100);当值为STRING时,stretch代表由父容器计算控件宽度,auto代表根据内容情况自动计算宽度 |\n| height | stretch | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小高度,如(100);当值为STRING时,stretch代表由父容器计算控件高度,auto代表根据内容情况自动计算高度 |\n| minwidth | -1 | INT | 控件的最小宽度,如(30) |\n| minheight | -1 | INT | 控件的最小高度,如(30) |\n| maxwidth | 9999999 | INT / STRING | 控件的最大宽度,描述同width |\n| maxheight | 9999999 | INT / STRING | 控件的最大高度,描述同height |\n| bkimage | | STRING | 背景图片,如(bk.bmp或file=\'aaa.jpg\' res=\'\' dest=\'0,0,0,0\' source=\'0,0,0,0\' corner=\'0,0,0,0\' fade=\'255\' xtiled=\'false\' ytiled=\'false\') |\n| tooltiptext | | STRING | 鼠标悬浮提示,如(请在这里输入你的密码) |\n| tooltiptextid | | STRING | 鼠标悬浮提示,指定多语言模块的ID,当tooltiptext为空时则显示此属性,如(TOOL_TIP_ID) |\n| dataid | | STRING | 自定义字符串数据,辅助函数,供用户使用 |\n| enabled | true | BOOL | 是否可以响应用户操作,如(true) |\n| mouse | true | BOOL | 本控件是否可以响应鼠标操作,如(true) |\n| receivepointer | true | BOOL | 是否响应触控消息,如(true) |\n| keyboard | true | BOOL | 非CButtonUI类忽略该值,为false时不支持TAB_STOP,且该对象不处理键盘信息 |\n| visible | true | BOOL | 是否可见,如(true) |\n| fadevisible | true | BOOL | 是否可见,如(true),此属性会触发控件动画效果 |\n| float | false | BOOL | 是否使用绝对定位,如(true) |\n| menu | false | BOOL | 是否需要右键菜单,如(true) |\n| cache | false | BOOL | 是否启用控件绘制缓存,如(true) |\n| nofocus | false | BOOL | 是否可以获取焦点,如(true) |\n| alpha | 255 | INT | 控件的整体透明度,如(128) |\n| state | normal | STRING | 控件的当前状态,支持normal、hot、pushed、disabled状态 |\n| cursortype | arrow | STRING | 鼠标移动到控件上时的鼠标光标,arrow、hand、ibeam |\n| normalimage | | STRING | 普通状态图片 |\n| hotimage | | STRING | 鼠标悬浮的状态图片 |\n| pushedimage | | STRING | 鼠标按下的状态图片 |\n| disabledimage | | STRING | 禁用的状态图片 |\n| forenormalimage | | STRING | 普通状态前景图片 |\n| forehotimage | | STRING | 鼠标悬浮的状态前景图片 |\n| forepushedimage | | STRING | 鼠标按下的状态前景图片 |\n| foredisabledimage | | STRING | 禁用的状态前景图片 |\n| renderoffset | 0,0 | SIZE | 控件绘制时的偏移量,如(10,10),一般用于绘制动画 |\n| fadealpha | false | BOOL | 是否启用控件透明渐变动画,如(true) |\n| fadehot | false | BOOL | 是否启用控件悬浮状态下 的透明渐变动画,如(true) |\n| fadewidth | false | BOOL | 是否启用控件宽度渐变动画,如(true) |\n| fadeheight | false | BOOL | 是否启用控件高度渐变动画,如(true) |\n| fadeinoutxfromleft | false | BOOL | 是否启用控件从左到右的动画,如(true) |\n| fadeinoutxfromright | false | BOOL | 是否启用控件从右到左的动画,如(true) | \n| fadeinoutyfromtop | false | BOOL | 是否启用控件从上到下的动画,如(true) | \n| fadeinoutyfrombottom | false | BOOL | 是否启用控件从下到上的动画,如(true) |\n\n## 可用接口\n\n`Control` 继承了 `PlaceHolder` 提供的接口,包含了所有基础控件共有的属性。\n\n| 接口名称 | 用途 |\n| :--- | :--- |\n| [GetParent](#GetParent) | 获取父容器指针 |\n| [GetAncestor](#GetAncestor) | 根据名称获取祖先容器指针 |\n| [GetName](#GetName) | 获取控件名称,对应 xml 中 name 属性 |\n| [GetUTF8Name](#GetUTF8Name) | 获取控件名称,对应 xml 中 name 属性 |\n| [SetName](#SetName) | 设置控件名称,内存中设置不会写入 xml 中 |\n| [SetUTF8Name](#SetUTF8Name) | 设置控件名称,内存中设置不会写入 xml 中(UTF8 编码) |\n| [GetWindow](#GetWindow) | 获取关联的窗口指针 |\n| [SetWindow](#SetWindow) | 设置容器所属窗口 |\n| [Init](#Init) | 初始化函数 |\n| [DoInit](#DoInit) | 由 Init 调用,功能与 Init 相同 |\n| [IsVisible](#IsVisible) | 判断是否可见 |\n| [IsInternVisible](#IsInternVisible) | 待补充 |\n| [IsFloat](#IsFloat) | 判断控件是否浮动,对应 xml 中 float 属性 |\n| [SetFloat](#SetFloat) | 设置控件是否浮动 |\n| [GetFixedWidth](#GetFixedWidth) | 获取固定宽度,对应 xml 中 width 属性 |\n| [SetFixedWidth](#SetFixedWidth) | 设置控件固定宽度 |\n| [GetFixedHeight](#GetFixedHeight) | 获取固定高度 |\n| [SetFixedHeight](#SetFixedHeight) | 设置固定高度 |\n| [GetMinWidth](#GetMinWidth) | 获取最小宽度 |\n| [SetMinWidth](#SetMinWidth) | 设置最小宽度 |\n| [GetMaxWidth](#GetMaxWidth) | 获取最大宽度 |\n| [SetMaxWidth](#SetMaxWidth) | 设置最大宽度 |\n| [GetMinHeight](#GetMinHeight) | 获取最小高度 |\n| [SetMinHeight](#SetMinHeight) | 设置最小高度 |\n| [GetMaxHeight](#GetMaxHeight) | 获取最大高度 |\n| [SetMaxHeight](#SetMaxHeight) | 设置最大高度 |\n| [GetWidth](#GetWidth) | 获取实际宽度 |\n| [GetHeight](#GetHeight) | 获取实际高度 |\n| [GetHorAlignType](#GetHorAlignType) | 获取水平对齐方式 |\n| [SetHorAlignType](#SetHorAlignType) | 设置水平对齐方式 |\n| [GetVerAlignType](#GetVerAlignType) | 获取垂直对齐方式 |\n| [SetVerAlignType](#SetVerAlignType) | 设置垂直对齐方式 |\n| [IsReEstimateSize](#IsReEstimateSize) | 待补充 |\n| [SetReEstimateSize](#SetReEstimateSize) | 待补充 |\n| [EstimateSize](#EstimateSize) | 待补充 |\n| [GetPos](#GetPos) | 获取控件位置 |\n| [SetPos](#SetPos) | 设置控件位置 |\n| [Arrange](#Arrange) | 进行布局 |\n| [ArrangeAncestor](#ArrangeAncestor) | 让父容器排列 |\n| [IsArranged](#IsArranged) | 判断是否已经排列过 |\n| [Invalidate](#Invalidate) | 重绘控件 |\n| [GetPosWithScrollOffset](#GetPosWithScrollOffset) | 待补充 |\n| [GetScrollOffset](#GetScrollOffset) | 待补充 |\n| [ArrangeSelf](#ArrangeSelf) | 待补充 |\n| [GetBkColor](#GetBkColor) | 获取背景颜色 |\n| [SetBkColor](#SetBkColor) | 设置背景颜色 |\n| [GetStateColor](#GetStateColor) | 获取某个状态下的字体颜色 |\n| [SetStateColor](#SetStateColor) | 设置某个状态下的字体颜色 |\n| [GetBkImage](#GetBkImage) | 获取背景图片位置 |\n| [GetUTF8BkImage](#GetUTF8BkImage) | 获取 UTF8 格式的背景图片位置 |\n| [SetBkImage](#SetBkImage) | 设置背景图片 |\n| [SetUTF8BkImage](#SetUTF8BkImage) | 设置背景图片(UTF8 格式字符串) |\n| [GetStateImage](#GetStateImage) | 获取指定状态下的图片位置 |\n| [SetStateImage](#SetStateImage) | 设置某个状态下的图片 |\n| [GetForeStateImage](#GetForeStateImage) | 获取指定状态下的前景图片 |\n| [SetForeStateImage](#SetForeStateImage) | 设置某个状态下前景图片 |\n| [GetState](#GetState) | 获取控件状态 |\n| [SetState](#SetState) | 设置控件状态 |\n| [GetEstimateImage](#GetEstimateImage) | 获取控件图片指针 |\n| [GetBorderSize](#GetBorderSize) | 获取边框大小 |\n| [SetBorderSize](#SetBorderSize) | 设置边框大小 |\n| [GetBorderColor](#GetBorderColor) | 获取边框颜色 |\n| [SetBorderColor](#SetBorderColor) | 设置边框颜色 |\n| [SetBorderSize](#SetBorderSize) | 设置边框的大小 |\n| [GetLeftBorderSize](#GetLeftBorderSize) | 获取左侧边框大小 |\n| [SetLeftBorderSize](#SetLeftBorderSize) | 设置左侧边框大小 |\n| [GetTopBorderSize](#GetTopBorderSize) | 获取顶部边框大小 |\n| [SetTopBorderSize](#SetTopBorderSize) | 设置顶部边框大小 |\n| [GetRightBorderSize](#GetRightBorderSize) | 获取右侧边框大小 |\n| [SetRightBorderSize](#SetRightBorderSize) | 设置右侧边框大小 |\n| [GetBottomBorderSize](#GetBottomBorderSize) | 获取下方边框大小 |\n| [SetBottomBorderSize](#SetBottomBorderSize) | 设置下方边框大小 |\n| [GetBorderRound](#GetBorderRound) | 获取边框大小 |\n| [SetBorderRound](#SetBorderRound) | 设置边框大小 |\n| [GetCursorType](#GetCursorType) | 获取鼠标指针类型 |\n| [SetCursorType](#SetCursorType) | 设置当前鼠标指针类型 |\n| [GetToolTipText](#GetToolTipText) | 获取控件在鼠标悬浮状态下的提示文本 |\n| [GetUTF8ToolTipText](#GetUTF8ToolTipText) | 获取控件在鼠标悬浮状态下的提示文本(UTF8 格式) |\n| [SetToolTipText](#SetToolTipText) | 设置鼠标悬浮到控件显示的提示文本 |\n| [SetUTF8ToolTipText](#SetUTF8ToolTipText) | 设置鼠标悬浮到控件显示的提示文本(UTF8 格式) |\n| [SetToolTipTextId](#SetToolTipTextId) | 设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字 |\n| [SetUTF8ToolTipTextId](#SetUTF8ToolTipTextId) | 设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字(UTF8 格式) |\n| [SetToolTipWidth](#SetToolTipWidth) | 设置鼠标悬浮到控件上提示的文本单行最大宽度 |\n| [GetToolTipWidth](#GetToolTipWidth) | 获取鼠标悬浮到控件上提示的文本单行最大宽度 |\n| [IsContextMenuUsed](#IsContextMenuUsed) | 控件是否响应右键菜单消息 |\n| [SetContextMenuUsed](#SetContextMenuUsed) | 设置控件响应右键菜单消息 |\n| [GetDataID](#GetDataID) | 获取用户绑定到控件的数据字符串 |\n| [GetUTF8DataID](#GetUTF8DataID) | 获取用户绑定到控件的数据字符串(UTF8 格式) |\n| [SetDataID](#SetDataID) | 绑定一个字符串数据到控件 |\n| [SetUTF8DataID](#SetUTF8DataID) | 绑定一个字符串数据到控件(UTF8 格式) |\n| [GetUserDataBase](#GetUserDataBase) | 获取用户绑定的自定义数据结构 |\n| [SetUserDataBase](#SetUserDataBase) | 绑定自定义数据到控件,用户可继承 UserDataBase 来补充需要绑定的数据 |\n| [SetVisible](#SetVisible) | 设置控件是否可见 |\n| [SetInternVisible](#SetInternVisible) | 待补充 |\n| [SetVisible_](#SetVisible_) | 待补充 |\n| [IsEnabled](#IsEnabled) | 检查控件是否可用 |\n| [SetEnabled](#SetEnabled) | 设置控件可用状态 |\n| [IsMouseEnabled](#IsMouseEnabled) | 检查控件是否响应鼠标事件 |\n| [SetMouseEnabled](#SetMouseEnabled) | 设置控件是否响应鼠标事件 |\n| [IsKeyboardEnabled](#IsKeyboardEnabled) | 检查控件是否响应键盘事件 |\n| [SetKeyboardEnabled](#SetKeyboardEnabled) | 设置控件是否响应键盘事件 |\n| [IsFocused](#IsFocused) | 检查控件是否具有焦点 |\n| [SetFocus](#SetFocus) | 让控件获取焦点 |\n| [SetNoFocus](#SetNoFocus) | 让控件设置永远获取不到焦点 |\n| [GetControlFlags](#GetControlFlags) | 返回控件的标识,用于判断是否可以响应 TAB 切换事件 |\n| [IsMouseFocused](#IsMouseFocused) | 判断当前鼠标焦点是否在控件上 |\n| [SetMouseFocused](#SetMouseFocused) | 设置是否将鼠标焦点到控件上 |\n| [IsActivatable](#IsActivatable) | 判断控件当前是否是激活状态 |\n| [Activate](#Activate) | 待补充 |\n| [FindControl](#FindControl) | 根据坐标查找指定控件 |\n| [GetPos](#GetPos) | 获取控件位置 |\n| [SetPos](#SetPos) | 设置控件位置 |\n| [GetMargin](#GetMargin) | 获取控件的外边距 |\n| [SetMargin](#SetMargin) | 设置控件的外边距 |\n| [EstimateSize](#EstimateSize) | 计算控件大小 |\n| [EstimateText](#EstimateText) | 待补充 |\n| [IsPointInWithScrollOffset](#IsPointInWithScrollOffset) | 检查指定坐标是否在滚动条当前滚动位置的范围内 |\n| [HasHotState](#HasHotState) | 判断控件是否处于 HOT 状态 |\n| [SetReceivePointerMsg](#SetReceivePointerMsg) | 设置控件是否响应触控消息 |\n| [IsReceivePointerMsg](#IsReceivePointerMsg) | 判断控件是否响应触控消息 |\n| [SetNeedButtonUpWhenKillFocus](#SetNeedButtonUpWhenKillFocus) | 设置控件失去焦点时是否发送鼠标弹起消息 |\n| [IsNeedButtonUpWhenKillFocus](#IsNeedButtonUpWhenKillFocus) | 判断控件失去焦点时是否发送鼠标弹起消息 |\n| [SetAttribute](#SetAttribute) | 设置控件指定属性 |\n| [SetClass](#SetClass) | 设置控件的 class 全局属性 |\n| [ApplyAttributeList](#ApplyAttributeList) | 应用一套属性列表 |\n| [OnApplyAttributeList](#OnApplyAttributeList) | 待补充 |\n| [HandleMessageTemplate](#HandleMessageTemplate) | 控件统一的消息处理入口,将传统 Windows 消息转换为自定义格式的消息 |\n| [HandleMessageTemplate](#HandleMessageTemplate) | 将转换后的消息派发到消息处理函数 |\n| [GetImage](#GetImage) | 根据图片路径缓存图片信息 |\n| [DrawImage](#DrawImage) | 绘制图片 |\n| [GetRenderContext](#GetRenderContext) | 获取绘制上下文对象 |\n| [ClearRenderContext](#ClearRenderContext) | 清理绘制上下文对象 |\n| [AlphaPaint](#AlphaPaint) | 待补充 |\n| [Paint](#Paint) | 绘制控件的入口函数 |\n| [PaintChild](#PaintChild) | 绘制控件子项入口函数 |\n| [SetClip](#SetClip) | 设置是否对绘制范围做剪裁限制 |\n| [IsClip](#IsClip) | 判断是否对绘制范围做剪裁限制 |\n| [SetAlpha](#SetAlpha) | 设置控件透明度 |\n| [GetAlpha](#GetAlpha) | 获取控件透明度 |\n| [IsAlpha](#IsAlpha) | 检查控件是否有透明属性 |\n| [SetHotAlpha](#SetHotAlpha) | 设置焦点状态透明度 |\n| [GetHotAlpha](#GetHotAlpha) | 获取焦点状态透明度 |\n| [GetRenderOffset](#GetRenderOffset) | 获取控件绘制偏移量 |\n| [SetRenderOffset](#SetRenderOffset) | 设置控件绘制偏移量 |\n| [SetRenderOffsetX](#SetRenderOffsetX) | 设置控件偏移的 X 坐标 |\n| [SetRenderOffsetY](#SetRenderOffsetY) | 设置控件偏移的 Y 坐标 |\n| [StartGifPlayForUI](#StartGifPlayForUI) | 播放 GIF |\n| [StopGifPlayForUI](#StopGifPlayForUI) | 停止播放 GIF |\n| [AttachGifPlayStop](#AttachGifPlayStop) | 监听 GIF 播放完成通知 |\n\n## GetParent\n\n获取父容器指针\n\n```cpp\nBox* GetParent()\n```\n\n - 参 数:无 \n - 返回值:返回父容器指针\n \n## GetAncestor\n\n根据名称获取祖先容器指针\n\n```cpp\nBox* GetAncestor(const std::wstring& strName)\n```\n\n - 参 数: \n - `strName` 要获取的祖先容器名称\n - 返回值:返回祖先容器指针\n\n## GetName\n\n获取控件名称,对应 xml 中 name 属性\n\n```cpp\nstd::wstring GetName()\n```\n\n - 参 数:无 \n - 返回值:返回控件名称\n\n## GetUTF8Name\n\n获取控件名称,对应 xml 中 name 属性\n\n```cpp\nstd::string GetUTF8Name()\n```\n\n - 参 数:无 \n - 返回值:返回控件名称(UTF8 编码)\n\n## SetName\n\n设置控件名称,内存中设置不会写入 xml 中\n\n```cpp\nvoid SetName(const std::wstring& strName)\n```\n\n - 参 数: \n - `strName` 要设置的名称\n - 返回值:无\n\n## SetUTF8Name\n\n设置控件名称,内存中设置不会写入 xml 中(UTF8 编码)\n\n```cpp\nvoid SetUTF8Name(const std::string& strName)\n```\n\n - 参 数: \n - `strName` 要设置的名称\n - 返回值:无\n\n## GetWindow\n\n获取关联的窗口指针\n\n```cpp\nvirtual Window* GetWindow()\n```\n\n - 参 数:无 \n - 返回值:返回关联窗口的指针\n\n## SetWindow\n\n设置容器所属窗口\n\n```cpp\nvirtual void SetWindow(Window* pManager, Box* pParent, bool bInit = true)\n```\n\n - 参 数: \n - `pManager` 窗口指针\n - `pParent` 父容器\n - `bInit` 设置后是否调用 Init 初始化控件\n - 返回值:无\n\n## SetWindow\n\n设置容器所属窗口\n\n```cpp\nvirtual void SetWindow(Window* pManager)\n```\n\n - 参 数: \n - `pManager` 窗口指针\n - 返回值:无\n\n## Init\n\n初始化函数\n\n```cpp\nvirtual void Init()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## DoInit\n\n由 Init 调用,功能与 Init 相同\n\n```cpp\nvirtual void DoInit()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## IsVisible\n\n判断是否可见\n\n```cpp\nvirtual bool IsVisible()\n```\n\n - 参 数:无 \n - 返回值:返回 true 为可见,否则 false 为不可见\n\n## IsInternVisible\n\n待补充\n\n```cpp\nbool IsInternVisible()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## IsFloat\n\n判断控件是否浮动,对应 xml 中 float 属性\n\n```cpp\nbool IsFloat()\n```\n\n - 参 数:无 \n - 返回值:返回 true 是浮动状态,否则 false 为非浮动状态\n\n## SetFloat\n\n设置控件是否浮动\n\n```cpp\nvoid SetFloat(bool bFloat = true)\n```\n\n - 参 数: \n - `bFloat` 设置为 true 为浮动,false 为不浮动\n - 返回值:无\n\n## GetFixedWidth\n\n获取固定宽度,对应 xml 中 width 属性\n\n```cpp\nint GetFixedWidth()\n```\n\n - 参 数:无 \n - 返回值:返回控件宽度\n\n## SetFixedWidth\n\n设置控件固定宽度\n\n```cpp\nvoid SetFixedWidth(int cx, bool bArrange = true, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `cx` 要设置的宽度\n - `bArrange` 是否重新排列,默认为 true\n - `bNeedDpiScale` 兼容 DPI 缩放,默认为 true\n - 返回值:无\n\n## GetFixedHeight\n\n获取固定高度\n\n```cpp\nint GetFixedHeight()\n```\n\n - 参 数:无 \n - 返回值:返回固定高度\n\n## SetFixedHeight\n\n设置固定高度\n\n```cpp\nvoid SetFixedHeight(int cy, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `cy` 要设置的固定高度\n - `bNeedDpiScale` 兼容 DPI 缩放,默认为 true\n - 返回值:无\n\n## GetMinWidth\n\n获取最小宽度\n\n```cpp\nint GetMinWidth()\n```\n\n - 参 数:无 \n - 返回值:返回最小宽度\n\n## SetMinWidth\n\n设置最小宽度\n\n```cpp\nvoid SetMinWidth(int cx)\n```\n\n - 参 数: \n - `cx` 要设置的最小宽度\n - 返回值:无\n\n## GetMaxWidth\n\n获取最大宽度\n\n```cpp\nint GetMaxWidth()\n```\n\n - 参 数:无 \n - 返回值:返回最大宽度\n\n## SetMaxWidth\n\n设置最大宽度\n\n```cpp\nvoid SetMaxWidth(int cx)\n```\n\n - 参 数: \n - `cx` 要设置的最大宽度\n - 返回值:无\n\n## GetMinHeight\n\n获取最小高度\n\n```cpp\nint GetMinHeight()\n```\n\n - 参 数:无 \n - 返回值:返回最小高度\n\n## SetMinHeight\n\n设置最小高度\n\n```cpp\nvoid SetMinHeight(int cy)\n```\n\n - 参 数: \n - `cy` 要设置的最小高度\n - 返回值:无\n\n## GetMaxHeight\n\n获取最大高度\n\n```cpp\nint GetMaxHeight()\n```\n\n - 参 数:无 \n - 返回值:返回最大高度\n\n## SetMaxHeight\n\n设置最大高度\n\n```cpp\nvoid SetMaxHeight(int cy)\n```\n\n - 参 数: \n - `cy` 要设置的最大高度\n - 返回值:无\n\n## GetWidth\n\n获取实际宽度\n\n```cpp\nint GetWidth()\n```\n\n - 参 数:无 \n - 返回值:返回实际宽度\n\n## GetHeight\n\n获取实际高度\n\n```cpp\nint GetHeight()\n```\n\n - 参 数:无 \n - 返回值:返回实际高度\n\n## GetHorAlignType\n\n获取水平对齐方式\n\n```cpp\nHorAlignType GetHorAlignType()\n```\n\n - 参 数:无 \n - 返回值:返回水平对齐方式,参考 HorAlignType 枚举\n\n## SetHorAlignType\n\n设置水平对齐方式\n\n```cpp\nvoid SetHorAlignType(HorAlignType horAlignType)\n```\n\n - 参 数: \n - `horAlignType` 要设置的对齐方式,参考 枚举\n - 返回值:无\n\n## GetVerAlignType\n\n获取垂直对齐方式\n\n```cpp\nVerAlignType GetVerAlignType()\n```\n\n - 参 数:无 \n - 返回值:返回垂直对齐方式,参见 VerAlignType 枚举\n\n## SetVerAlignType\n\n设置垂直对齐方式\n\n```cpp\nvoid SetVerAlignType(VerAlignType verAlignType)\n```\n\n - 参 数: \n - `vorAlignType` 要设置的对齐方式,参考 VerAlignType 枚举\n - 返回值:无\n\n## IsReEstimateSize\n\n待补充\n\n```cpp\nbool IsReEstimateSize()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## SetReEstimateSize\n\n待补充\n\n```cpp\nvoid SetReEstimateSize(bool bReEstimateSize)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## EstimateSize\n\n待补充\n\n```cpp\nvirtual CSize EstimateSize(CSize szAvailable)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## GetPos\n\n获取控件位置\n\n```cpp\nvirtual UiRect GetPos(bool bContainShadow = true)\n```\n\n - 参 数: \n - `bContainShadow` 是否包含阴影位置,默认为 true\n - 返回值:返回控件位置\n\n## SetPos\n\n设置控件位置\n\n```cpp\nvirtual void SetPos(UiRect rc)\n```\n\n - 参 数: \n - `rc` 要设置的位置信息\n - 返回值:无\n\n## Arrange\n\n进行布局\n\n```cpp\nvirtual void Arrange()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## ArrangeAncestor\n\n让父容器排列\n\n```cpp\nvirtual void ArrangeAncestor()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## IsArranged\n\n判断是否已经排列过\n\n```cpp\nbool IsArranged()\n```\n\n - 参 数:无 \n - 返回值:true 为已经排列过,false 为尚未排列\n\n## Invalidate\n\n重绘控件\n\n```cpp\nvirtual void Invalidate()\n```\n\n - 参 数:无 \n - 返回值:无\n\n## GetPosWithScrollOffset\n\n待补充\n\n```cpp\nUiRect GetPosWithScrollOffset()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## GetScrollOffset\n\n待补充\n\n```cpp\nCPoint GetScrollOffset()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n## ArrangeSelf\n\n待补充\n\n```cpp\nvirtual void ArrangeSelf()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### GetBkColor\n\n获取背景颜色\n\n```cpp\nstd::wstring GetBkColor()\n```\n\n - 参 数:无 \n - 返回值:返回背景颜色的字符串,该值在 global.xml 中定义\n\n### SetBkColor\n\n设置背景颜色\n\n```cpp\nvoid SetBkColor(const std::wstring& strColor)\n```\n\n - 参 数: \n - `strColor` 要设置的背景颜色值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### GetStateColor\n\n获取某个状态下的字体颜色\n\n```cpp\nstd::wstring GetStateColor(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的颜色值,参考 Control枚举\n - 返回值:指定状态下设定的颜色字符串,对应 global.xml 中指定色值\n\n### SetStateColor\n\n设置某个状态下的字体颜色\n\n```cpp\nvoid SetStateColor(ControlStateType stateType, const std::wstring& strColor)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的颜色值,参考 Control枚举\n - `strColor` 要设置的颜色值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### GetBkImage\n\n获取背景图片位置\n\n```cpp\nstd::wstring GetBkImage()\n```\n\n - 参 数:无 \n - 返回值:背景图片位置 \n\n### GetUTF8BkImage\n\n获取 UTF8 格式的背景图片位置\n\n```cpp\nstd::string GetUTF8BkImage()\n```\n\n - 参 数:无 \n - 返回值:背景图片位置\n\n### SetBkImage\n\n设置背景图片\n\n```cpp\nvoid SetBkImage(const std::wstring& strImage)\n```\n\n - 参 数: \n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### SetUTF8BkImage\n\n设置背景图片(UTF8 格式字符串)\n\n```cpp\nvoid SetUTF8BkImage(const std::string& strImage)\n```\n\n - 参 数: \n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### GetStateImage\n\n获取指定状态下的图片位置\n\n```cpp\nstd::wstring GetStateImage(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的图片,参考 `ControlStateType` 枚举\n - 返回值:指定状态下的图片位置\n\n### SetStateImage\n\n设置某个状态下的图片\n\n```cpp\nvoid SetStateImage(ControlStateType stateType, const std::wstring& strImage)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的图片,参考 Control枚举\n - `strImage` 要设置的图片路径\n - 返回值:无\n\n### GetForeStateImage\n\n获取指定状态下的前景图片\n\n```cpp\nstd::wstring GetForeStateImage(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取何种状态下的图片,参考 `ControlStateType` 枚举\n - 返回值:指定状态下前景图片位置\n\n### SetForeStateImage\n\n设置某个状态下前景图片\n\n```cpp\nvoid SetForeStateImage(ControlStateType stateType, const std::wstring& strImage)\n```\n\n - 参 数: \n - `stateType` 要设置何种状态下的图片,参考 `ControlStateType` 枚举\n - `strImage` 要设置的前景图片路径\n - 返回值:无\n\n### GetState\n\n获取控件状态\n\n```cpp\nControlStateType GetState()\n```\n\n - 参 数:无 \n - 返回值:控件的状态,请参考 `ControlStateType` 枚举\n\n### SetState\n\n设置控件状态\n\n```cpp\nvoid SetState(ControlStateType pStrState)\n```\n\n - 参 数: \n - `pStrState` 要设置的控件状态,请参考 `ControlStateType` 枚举\n - 返回值:无\n\n### GetEstimateImage\n\n获取控件图片指针\n\n```cpp\nvirtual Image* GetEstimateImage()\n```\n\n - 参 数:无 \n - 返回值:返回图片对象指针\n\n### GetBorderSize\n\n获取边框大小\n\n```cpp\nint GetBorderSize()\n```\n\n - 参 数:无 \n - 返回值:返回边框的大小\n\n### SetBorderSize\n\n设置边框大小\n\n```cpp\nvoid SetBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的边框大小\n - 返回值:无\n\n### GetBorderColor\n\n获取边框颜色\n\n```cpp\nstd::wstring GetBorderColor()\n```\n\n - 参 数:无 \n - 返回值:边框的颜色字符串,对应 global.xml 中的具体颜色值\n\n### SetBorderColor\n\n设置边框颜色\n\n```cpp\nvoid SetBorderColor(const std::wstring& strBorderColor)\n```\n\n - 参 数: \n - `strBorderColor` 设置边框的颜色字符串值,该值必须在 global.xml 中存在\n - 返回值:无\n\n### SetBorderSize\n\n设置边框的大小\n\n```cpp\nvoid SetBorderSize(UiRect rc)\n```\n\n - 参 数: \n - `rc` 一个 `UiRect` 结构的边框大小集合\n - 返回值:无\n\n### GetLeftBorderSize\n\n获取左侧边框大小\n\n```cpp\nint GetLeftBorderSize()\n```\n\n - 参 数:无 \n - 返回值:左侧边框的大小 \n\n### SetLeftBorderSize\n\n设置左侧边框大小\n\n```cpp\nvoid SetLeftBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的左侧边框大小\n - 返回值:无\n\n### GetTopBorderSize\n\n获取顶部边框大小\n\n```cpp\nint GetTopBorderSize()\n```\n\n - 参 数:无 \n - 返回值:顶部边框大小\n\n### SetTopBorderSize\n\n设置顶部边框大小\n\n```cpp\nvoid SetTopBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的上方边框大小\n - 返回值:无\n\n### GetRightBorderSize\n\n获取右侧边框大小\n\n```cpp\nint GetRightBorderSize()\n```\n\n - 参 数:无 \n - 返回值:右侧的边框大小\n\n### SetRightBorderSize\n\n设置右侧边框大小\n\n```cpp\nvoid SetRightBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的右侧边框大小\n - 返回值:无\n\n### GetBottomBorderSize\n\n获取下方边框大小\n\n```cpp\nint GetBottomBorderSize()\n```\n\n - 参 数:无 \n - 返回值:下方边框大小\n\n### SetBottomBorderSize\n\n设置下方边框大小\n\n```cpp\nvoid SetBottomBorderSize(int nSize)\n```\n\n - 参 数: \n - `nSize` 要设置的下方边框大小\n - 返回值:无\n\n### GetBorderRound\n\n获取边框大小\n\n```cpp\nCSize GetBorderRound()\n```\n\n - 参 数:无 \n - 返回值:四个方向的边框大小\n\n### SetBorderRound\n\n设置边框大小\n\n```cpp\nvoid SetBorderRound(CSize cxyRound)\n```\n\n - 参 数: \n - `cxyRound` 一个 CSize 结构表示了四个方向边框的大小\n - 返回值:无\n\n### GetCursorType\n\n获取鼠标指针类型\n\n```cpp\nvirtual CursorType GetCursorType()\n```\n\n - 参 数:无 \n - 返回值:当前鼠标类型\n\n### SetCursorType\n\n设置当前鼠标指针类型\n\n```cpp\nvoid SetCursorType(CursorType flag)\n```\n\n - 参 数: \n - `flag` 要设置的鼠标类型,参考 CursorType 枚举\n - 返回值:无\n\n### GetToolTipText\n\n获取控件在鼠标悬浮状态下的提示文本\n\n```cpp\nvirtual std::wstring GetToolTipText()\n```\n\n - 参 数:无 \n - 返回值:返回当前鼠标悬浮状态提示的文本\n\n### GetUTF8ToolTipText\n\n获取控件在鼠标悬浮状态下的提示文本(UTF8 格式)\n\n```cpp\nvirtual std::string GetUTF8ToolTipText()\n```\n\n - 参 数:无 \n - 返回值:返回当前鼠标悬浮状态提示的文本\n\n### SetToolTipText\n\n设置鼠标悬浮到控件显示的提示文本\n\n```cpp\nvirtual void SetToolTipText(const std::wstring& strText)\n```\n\n - 参 数: \n - `strText` 要设置的文本\n - 返回值:无\n\n### SetUTF8ToolTipText\n\n设置鼠标悬浮到控件显示的提示文本(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8ToolTipText(const std::string& strText)\n```\n\n - 参 数: \n - `strText` 要设置的文本\n - 返回值:无\n\n### SetToolTipTextId\n\n设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字\n\n```cpp\nvirtual void SetToolTipTextId(const std::wstring& strTextId)\n```\n\n - 参 数: \n - `strTextId` 在语言文件中对应的提示文字 ID\n - 返回值:无\n\n### SetUTF8ToolTipTextId\n\n设置鼠标悬浮到控件显示的提示文本在语言文件中对应的文字(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8ToolTipTextId(const std::string& strTextId)\n```\n\n - 参 数: \n - `strTextId` 在语言文件中对应的提示文字 ID\n - 返回值:无\n\n### SetToolTipWidth\n\n设置鼠标悬浮到控件上提示的文本单行最大宽度\n\n```cpp\nvirtual void SetToolTipWidth(int nWidth)\n```\n\n - 参 数: \n - `nWidth` 要设置的宽度值\n - 返回值:无\n\n### GetToolTipWidth\n\n获取鼠标悬浮到控件上提示的文本单行最大宽度\n\n```cpp\nvirtual int GetToolTipWidth(void)\n```\n\n - 参 数:无 \n - 返回值:当前提示文本最大宽度\n\n### IsContextMenuUsed\n\n控件是否响应右键菜单消息\n\n```cpp\nvirtual bool IsContextMenuUsed()\n```\n\n - 参 数:无 \n - 返回值:返回结果表示了是否响应右键菜单消息,true 响应右键菜单消息,false 不响应右键菜单消息\n\n### SetContextMenuUsed\n\n设置控件响应右键菜单消息\n\n```cpp\nvirtual void SetContextMenuUsed(bool bMenuUsed)\n```\n\n - 参 数: \n - `bMenuUsed` 是否响应右键菜单消息,true 为是,false 为否\n - 返回值:无\n\n### GetDataID\n\n获取用户绑定到控件的数据字符串\n\n```cpp\nvirtual std::wstring GetDataID()\n```\n\n - 参 数:无 \n - 返回值:返回具体数据字符串\n\n### GetUTF8DataID\n\n获取用户绑定到控件的数据字符串(UTF8 格式)\n\n```cpp\nvirtual std::string GetUTF8DataID()\n```\n\n - 参 数:无 \n - 返回值:返回具体数据字符串\n\n### SetDataID\n\n绑定一个字符串数据到控件\n\n```cpp\nvirtual void SetDataID(const std::wstring& strText)\n```\n\n - 参 数: \n - `strText` 要绑定的字符串数据\n - 返回值:无\n\n### SetUTF8DataID\n\n绑定一个字符串数据到控件(UTF8 格式)\n\n```cpp\nvirtual void SetUTF8DataID(const std::string& strText)\n```\n\n - 参 数: \n - `strText` 要绑定的字符串数据\n - 返回值:无\n\n### GetUserDataBase\n\n获取用户绑定的自定义数据结构\n\n```cpp\nvirtual UserDataBase* GetUserDataBase()\n```\n\n - 参 数:无 \n - 返回值:用户绑定的自定义结构数据指针\n\n### SetUserDataBase\n\n绑定自定义数据到控件,用户可继承 UserDataBase 来补充需要绑定的数据\n\n```cpp\nvirtual void SetUserDataBase(UserDataBase* pUserDataBase)\n```\n\n - 参 数: \n - `pUserDataBase` 数据指针\n - 返回值:无\n\n### SetVisible\n\n设置控件是否可见\n\n```cpp\nvirtual void SetVisible(bool bVisible = true)\n```\n\n - 参 数: \n - `bVisible` 为 true 时控件可见,为 false 时控件被隐藏\n - 返回值:无\n\n### SetInternVisible\n\n待补充\n\n```cpp\nvirtual void SetInternVisible(bool bVisible = true)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### SetVisible_\n\n待补充\n\n```cpp\nvirtual void SetVisible_(bool bVisible)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### IsEnabled\n\n检查控件是否可用\n\n```cpp\nvirtual bool IsEnabled()\n```\n\n - 参 数:无 \n - 返回值:控件可用状态,返回 true 控件可用,否则为 false\n\n### SetEnabled\n\n设置控件可用状态\n\n```cpp\nvirtual void SetEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 时控件可用,为 false 时控件为禁用状态则不可用\n - 返回值:无\n\n### IsMouseEnabled\n\n检查控件是否响应鼠标事件\n\n```cpp\nvirtual bool IsMouseEnabled()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否响应鼠标事件,返回 true 响应鼠标事件,false 为不响应\n\n### SetMouseEnabled\n\n设置控件是否响应鼠标事件\n\n```cpp\nvirtual void SetMouseEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 响应鼠标事件,为 false 时不响应鼠标事件\n - 返回值:无\n\n### IsKeyboardEnabled\n\n检查控件是否响应键盘事件\n\n```cpp\nvirtual bool IsKeyboardEnabled()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否响应键盘事件,返回 true 响应键盘事件,false 不响应键盘事件\n\n### SetKeyboardEnabled\n\n设置控件是否响应键盘事件\n\n```cpp\nvirtual void SetKeyboardEnabled(bool bEnable = true)\n```\n\n - 参 数: \n - `bEnable` 为 true 响应键盘事件,为 false 时不响应键盘事件\n - 返回值:无\n\n### IsFocused\n\n检查控件是否具有焦点\n\n```cpp\nvirtual bool IsFocused()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否具有检点,为 true 时是当前具有焦点,为 false 时控件没有焦点\n\n### SetFocus\n\n让控件获取焦点\n\n```cpp\nvirtual void SetFocus()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### SetNoFocus\n\n让控件设置永远获取不到焦点\n\n```cpp\nvoid SetNoFocus()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### GetControlFlags\n\n返回控件的标识,用于判断是否可以响应 TAB 切换事件\n\n```cpp\nvirtual UINT GetControlFlags() const\n```\n\n - 参 数:无 \n - 返回值:返回控件的标识类型,`UIFLAG_DEFAULT` 为默认状态不支持焦点切换,`UIFLAG_TABSTOP` 为支持焦点切换\n\n### IsMouseFocused\n\n判断当前鼠标焦点是否在控件上\n\n```cpp\nvirtual bool IsMouseFocused()\n```\n\n - 参 数:无 \n - 返回值:返回鼠标焦点是否在控件上,true 鼠标焦点在控件上,false 鼠标焦点不在控件上\n\n### SetMouseFocused\n\n设置是否将鼠标焦点到控件上\n\n```cpp\nvirtual void SetMouseFocused(bool bMouseFocused)\n```\n\n - 参 数: \n - `bMouseFocused` 为 true 时设置鼠标焦点到控件上,为 false 时让控件失去鼠标焦点\n - 返回值:无\n\n### IsActivatable\n\n判断控件当前是否是激活状态\n\n```cpp\nvirtual bool IsActivatable()\n```\n\n - 参 数:无 \n - 返回值:返回控件状态,true 控件当前是激活状态,可见并可用,false 控件当前非激活状态,可能不可见或被禁用\n\n### Activate\n\n待补充\n\n```cpp\nvirtual void Activate()\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### FindControl\n\n根据坐标查找指定控件\n\n```cpp\nvirtual Control* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags, CPoint scrollPos = CPoint()\n```\n\n - 参 数: \n - `Proc\n - `pData\n - `uFlags\n - `scrollPos\n - 返回值:返回控件的指针\n\n### GetPos\n\n获取控件位置\n\n```cpp\nvirtual UiRect GetPos(bool bContainShadow = true)\n```\n\n - 参 数: \n - `bContainShadow` 是否包含阴影,默认为 true 则包含阴影范围,否则 false 为不包含\n - 返回值:返回控件的位置信息\n\n### SetPos\n\n设置控件位置\n\n```cpp\nvirtual void SetPos(UiRect rc)\n```\n\n - 参 数: \n - `rc` 控件位置的描述信息\n - 返回值:无\n\n### GetMargin\n\n获取控件的外边距\n\n```cpp\nvirtual UiRect GetMargin()\n```\n\n - 参 数:无 \n - 返回值:返回控件的外边距\n\n### SetMargin\n\n设置控件的外边距\n\n```cpp\nvirtual void SetMargin(UiRect rcMargin, bool bNeedDpiScale = true)\n```\n\n - 参 数: \n - `rcMargin` 控件的外边距信息\n - `bNeedDpiScale` 是否让外边距根据 DPI 适配,默认为 true,false 不适配 DPI\n - 返回值:无\n\n### EstimateSize\n\n计算控件大小\n\n```cpp\nvirtual CSize EstimateSize(CSize szAvailable)\n```\n\n - 参 数: \n - `szAvailable` 暂无意义\n - 返回值:szAvailable 控件实际大小(如果设置了图片并设置 width 或 height 任意一项为 auto,将根据图片来计算最终大小)\n\n### EstimateText\n\n待补充\n\n```cpp\nvirtual CSize EstimateText(CSize szAvailable, bool& bReEstimateSize)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### IsPointInWithScrollOffset\n\n检查指定坐标是否在滚动条当前滚动位置的范围内\n\n```cpp\nvirtual bool IsPointInWithScrollOffset(const CPoint& point)\n```\n\n - 参 数: \n - `point` 具体坐标\n - 返回值:返回是否在范围内,true 在滚动条当前滚动位置范围内,false 不在滚动条当前滚动位置范围内\n\n### HasHotState\n\n判断控件是否处于 HOT 状态\n\n```cpp\nvirtual bool HasHotState()\n```\n\n - 参 数:无 \n - 返回值:返回 true 表示当前处于 HOT 状态, 否则为 false\n\n### SetReceivePointerMsg\n\n设置控件是否响应触控消息\n\n```cpp\nvoid SetReceivePointerMsg(bool bRecv)\n```\n\n - 参 数: \n - `bRecv` 设置为 true 表示响应触控消息,false 为不响应\n - 返回值:无\n\n### IsReceivePointerMsg\n\n判断控件是否响应触控消息\n\n```cpp\nbool IsReceivePointerMsg() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为响应,否则为 false\n\n### SetNeedButtonUpWhenKillFocus\n\n设置控件失去焦点时是否发送鼠标弹起消息\n\n```cpp\nvoid SetNeedButtonUpWhenKillFocus(bool bNeed)\n```\n\n - 参 数: \n - `bNeed` bNeed 设置为 true 表示响应触控消息,false 为不响应\n - 返回值:无\n\n### IsNeedButtonUpWhenKillFocus\n\n判断控件失去焦点时是否发送鼠标弹起消息\n\n```cpp\nbool IsNeedButtonUpWhenKillFocus() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为需要,false 为不需要\n\n### SetAttribute\n\n设置控件指定属性\n\n```cpp\nvirtual void SetAttribute(const std::wstring& strName, const std::wstring& strValue)\n```\n\n - 参 数: \n - `strName` 要设置的属性名称(如 width)\n - `strValue` 要设置的属性值(如 100)\n - 返回值:无\n\n### SetClass\n\n设置控件的 class 全局属性\n\n```cpp\nvoid SetClass(const std::wstring& strClass)\n```\n\n - 参 数: \n - `strClass` 要设置的 class 名称,该名称必须在 global.xml 中存在\n - 返回值:无\n\n### ApplyAttributeList\n\n应用一套属性列表\n\n```cpp\nvoid ApplyAttributeList(const std::wstring& strList)\n```\n\n - 参 数: \n - `strList` 属性列表的字符串表示,如 `width=\"100\" height=\"30\"`\n - 返回值:无\n\n### OnApplyAttributeList\n\n待补充\n\n```cpp\nbool OnApplyAttributeList(const std::wstring& strReceiver, const std::wstring& strList, EventArgs* eventArgs)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n\n### HandleMessageTemplate\n\n控件统一的消息处理入口,将传统 Windows 消息转换为自定义格式的消息\n\n```cpp\nvoid HandleMessageTemplate(EventType eventType, WPARAM wParam = 0, LPARAM lParam = 0, TCHAR tChar = 0, CPoint mousePos = CPoint()\n```\n\n - 参 数: \n - `eventType 消息内容\n - `wParam 消息附加内容\n - `lParam 消息附加内容\n - `tChar 按键信息\n - `mousePos 鼠标信息\n - 返回值:无\n\n### HandleMessageTemplate\n\n将转换后的消息派发到消息处理函数\n\n```cpp\nvirtual void HandleMessageTemplate(EventArgs& msg)\n```\n\n - 参 数: \n - `msg` 消息内容\n - 返回值:无\n\n### GetImage\n\n根据图片路径缓存图片信息\n\n```cpp\nvoid GetImage(Image& duiImage)\n```\n\n - 参 数:无 \n - 返回值:无\n\n### DrawImage\n\n绘制图片\n\n```cpp\nbool DrawImage(IRenderContext* pRender, Image& duiImage, const std::wstring& strModify = L\"\", int nFade = DUI_NOSET_VALUE)\n```\n\n - 参 数: \n - `pRender` 绘制上下文\n - `duiImage` 图片对象\n - `strModify` 图片的附加属性\n - `nFade` 控件的透明度,如果启用动画效果该值在绘制时是不断变化的\n - 返回值:成功返回 true,失败返回 false\n\n### AlphaPaint\n\n待补充\n\n```cpp\nvoid AlphaPaint(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `待补充\n - 返回值:待补充\n \n### GetRenderContext\n\n获取绘制上下文对象\n\n```cpp\nIRenderContext* GetRenderContext()\n```\n\n - 参 数:无 \n - 返回值:返回绘制上下文对象\n\n### ClearRenderContext\n\n清理绘制上下文对象\n\n```cpp\nvoid ClearRenderContext()\n```\n\n - 参 数:无 \n - 返回值:无\n\n### Paint\n\n绘制控件的入口函数\n\n```cpp\nvirtual void Paint(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `pRender` 指定绘制区域\n - `rcPaint` 指定绘制坐标\n - 返回值:无\n \n### PaintChild\n\n绘制控件子项入口函数\n\n```cpp\nvirtual void PaintChild(IRenderContext* pRender, const UiRect& rcPaint)\n```\n\n - 参 数: \n - `pRender` 指定绘制区域\n - `rcPaint` 指定绘制坐标\n - 返回值:无\n \n### SetClip\n\n设置是否对绘制范围做剪裁限制\n\n```cpp\nvoid SetClip(bool clip)\n```\n\n - 参 数: \n - `clip` 设置 true 为需要,否则为不需要,见绘制函数\n - 返回值:无\n\n### IsClip\n\n判断是否对绘制范围做剪裁限制\n\n```cpp\nbool IsClip() const\n```\n\n - 参 数:无 \n - 返回值:返回 true 为需要,false 为不需要\n\n### SetAlpha\n\n设置控件透明度\n\n```cpp\nvoid SetAlpha(int alpha)\n```\n\n - 参 数: \n - `alpha` 0 ~ 255 的透明度值,255 为不透明\n - 返回值:无\n\n### GetAlpha\n\n获取控件透明度\n\n```cpp\nint GetAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件的透明度\n\n### IsAlpha\n\n检查控件是否有透明属性\n\n```cpp\nbool IsAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件是否透明,true 控件当前有透明属性,false 控件没有透明属性\n\n### SetHotAlpha\n\n设置焦点状态透明度\n\n```cpp\nvoid SetHotAlpha(int nHotAlpha)\n```\n\n - 参 数: \n - `alpha` 0 ~ 255 的透明度值,255 为不透明\n - 返回值:无\n\n### GetHotAlpha\n\n获取焦点状态透明度\n\n```cpp\nint GetHotAlpha()\n```\n\n - 参 数:无 \n - 返回值:返回控件焦点状态的透明度\n\n### GetRenderOffset\n\n获取控件绘制偏移量\n\n```cpp\nCPoint GetRenderOffset()\n```\n\n - 参 数:无 \n - 返回值:返回当前控件的绘制偏移量\n\n### SetRenderOffset\n\n设置控件绘制偏移量\n\n```cpp\nvoid SetRenderOffset(CPoint renderOffset)\n```\n\n - 参 数: \n - `renderOffset` 控件偏移数据\n - 返回值:无\n\n### SetRenderOffsetX\n\n设置控件偏移的 X 坐标\n\n```cpp\nvoid SetRenderOffsetX(int renderOffsetX)\n```\n\n - 参 数: \n - `renderOffsetX` X 坐标值\n - 返回值:无\n\n### SetRenderOffsetY\n\n设置控件偏移的 Y 坐标\n\n```cpp\nvoid SetRenderOffsetY(int renderOffsetY)\n```\n\n - 参 数: \n - `renderOffsetY` Y 坐标值\n - 返回值:无\n\n### StartGifPlayForUI\n\n播放 GIF\n\n```cpp\nvoid StartGifPlayForUI(GifStopType frame = kGifStopFirst,int playcount = -1)\n```\n\n - 参 数: \n - `playcount` 播放完成停止在哪一帧,可设置第一帧、当前帧和最后一帧。请参考 GifStopType 枚举\n - 返回值:无\n\n### StopGifPlayForUI\n\n停止播放 GIF\n\n```cpp\nvoid StopGifPlayForUI(bool transfer = false, GifStopType frame = kGifStopCurrent)\n```\n\n - 参 数: \n - `transfer` 是否将停止事件通知给订阅者,参考 AttachGifPlayStop 方法\n - `frame` 播放结束停止在哪一帧,可设置第一帧、当前帧和最后一帧。请参考 GifStopType 枚举\n - 返回值:无\n\n### AttachGifPlayStop\n\n监听 GIF 播放完成通知\n\n```cpp\nvoid AttachGifPlayStop(const EventCallback& callback)\n```\n\n - 参 数: \n - `callback` 要监听 GIF 停止播放的回调函数\n - 返回值:无 -->
Button控件 历史版本:
上次修改时间: 2021-09-08 09:56:25
\n\n```\n\n## 可用接口\n\n| 接口名称 | 用途 |\n| :--- | :--- |\n| [AttachClick](#AttachClick) | 绑定鼠标点击处理函数 |\n\n\n### AttachClick\n\n绑定鼠标点击处理函数\n\n```cpp\nvoid AttachClick(const EventCallback& callback)\n```\n\n - 参 数: \n - `callback` 要绑定的回调函数\n - 返回值:无\n\n\n# Label(文本控件)\n\nLabel 是一个模板类,当直接使用传统控件如 Button、CheckBox 等控件时,将从 [Control](Control.md) 继承属性和方法。\n当使用包含布局属性的控件如 ButtonBox、ComboBoxBox、LabelBox 等控件时,Label 将继承 [Box](../Containers/Box.md) 的方法和属性。\n\n## 可用属性\n\n| 属性名称 | 默认值 | 参数类型 | 用途 |\n| :--- | :--- | :--- | :--- |\n| width | auto | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小宽度,如(100);当值为STRING时,stretch代表由父容器计算控件宽度,auto代表根据内容情况自动计算宽度 |\n| height | auto | INT / STRING | 可以设置INT或STRING类型的值.当值为INT是则设置控件的最小高度,如(100);当值为STRING时,stretch代表由父容器计算控件高度,auto代表根据内容情况自动计算高度 |\n| text | | STRING | 显示文本,如(测试文本) |\n| textid | | STRING | 多语言功能的ID,如(TEXT_OUT) |\n| align | left | STRING | 文本的输出位置,如(center),支持left、center、right、top、vcenter、bottom |\n| font | -1 | INT | 字体id,如(0) |\n| endellipsis | false | BOOL | 句末显示不完是否使用...代替,如(true) |\n| textpadding | 0,0,0,0 | RECT | 文字显示的边距,如(2,2,2,2) |\n| normaltextcolor | | STRING | 普通字体颜色,不指定则使用默认颜色,如(blue) |\n| hottextcolor | | STRING | 鼠标悬浮字体颜色,不指定则使用默认颜色,如(blue) |\n| pushedtextcolor | | STRING | 鼠标按下字体颜色,不指定则使用默认颜色,如(blue) |\n| disabledtextcolor | | STRING | disabled字体颜色,不指定则使用默认颜色,如(blue) |\n| linelimit | false | BOOL | 是否限制正行输出,如(true) |\n| singleline | true | BOOL | 是否单行输出文字,如(true) |\n\n## 可用接口\n\n| 接口名称 | 用途 |\n| :--- | :--- |\n| [SetTextStyle](#SetTextStyle) | 设置文本样式 |\n| [GetTextStyle](#GetTextStyle) | 获取文本样式 |\n| [GetStateTextColor](#GetStateTextColor) | 获取指定状态下的文本颜色 |\n| [SetStateTextColor](#SetStateTextColor) | 设置指定状态下的文本颜色 |\n| [GetFont](#GetFont) | 获取当前字体编号 |\n| [SetFont](#SetFont) | 设置当前字体 |\n| [GetTextPadding](#GetTextPadding) | 获取文字边距 |\n| [SetTextPadding](#SetTextPadding) | 设置文字边距信息 |\n| [IsSingleLine](#IsSingleLine) | 判断是否是单行模式 |\n| [SetSingleLine](#SetSingleLine) | 设置为单行输入模式 |\n| [IsLineLimit](#IsLineLimit) | 是否限制整行输出 |\n| [SetLineLimit](#SetLineLimit) | 限制整行输出 |\n\n### SetTextStyle\n\n设置文本样式\n\n```cpp\nvoid SetTextStyle(UINT uStyle)\n```\n\n - 参 数: \n - `uStyle` 要设置的样式\n - 返回值:无\n\n### GetTextStyle\n\n获取文本样式\n\n```cpp\nUINT GetTextStyle()\n```\n\n - 参 数:无 \n - 返回值:返回文本样式\n\n### GetStateTextColor\n\n获取指定状态下的文本颜色\n\n```cpp\nstd::wstring GetStateTextColor(ControlStateType stateType)\n```\n\n - 参 数: \n - `stateType` 要获取的状态标志\n - 返回值:返回指定状态下的文本颜色\n\n### SetStateTextColor\n\n设置指定状态下的文本颜色\n\n```cpp\nvoid SetStateTextColor(ControlStateType stateType, const std::wstring& dwTextColor)\n```\n\n - 参 数: \n - `stateType` 要设置的状态标志\n - `dwTextColor` 要设置的状态颜色字符串,该值必须在 global.xml 中存在\n - 返回值:无\n\n### GetFont\n\n获取当前字体编号\n\n```cpp\nint GetFont()\n```\n\n - 参 数:无 \n - 返回值:返回字体编号,该编号在 global.xml 中标识\n\n### SetFont\n\n设置当前字体\n\n```cpp\nvoid SetFont(int index)\n```\n\n - 参 数: \n - `index` 要设置的字体编号,该编号必须在 global.xml 中存在\n - 返回值:无\n\n### GetTextPadding\n\n获取文字边距\n\n```cpp\nUiRect GetTextPadding()\n```\n\n - 参 数:无 \n - 返回值:返回文字的边距信息\n\n### SetTextPadding\n\n设置文字边距信息\n\n```cpp\nvoid SetTextPadding(UiRect rc)\n```\n\n - 参 数: \n - `rc` 边距信息\n - 返回值:无\n\n### IsSingleLine\n\n判断是否是单行模式\n\n```cpp\nbool IsSingleLine()\n```\n\n - 参 数:无 \n - 返回值:返回 true 表示单行模式,否则为 false\n\n### SetSingleLine\n\n设置为单行输入模式\n\n```cpp\nvoid SetSingleLine(bool bSingleLine)\n```\n\n - 参 数: \n - `bSingleLine` 为 true 时为单行模式,否则为 false\n - 返回值:无\n\n### IsLineLimit\n\n是否限制整行输出\n\n```cpp\nbool IsLineLimit()\n```\n\n - 参 数:无 \n - 返回值:返回 true 为限制,false 为不限制\n\n### SetLineLimit\n\n限制整行输出\n\n```cpp\nvoid SetLineLimit(bool bLineLimit)\n```\n\n - 参 数: \n - `bLineLimit` 设置 true 为限制,false 为不限制\n - 返回值:无 -->
选择框控件 历史版本:
上次修改时间: 2021-09-08 09:57:48
进度条控件 历史版本:
上次修改时间: 2021-09-08 09:58:34
编辑器 控件 历史版本:
上次修改时间: 2021-09-08 09:59:56
ControlBox 盒子 历史版本:
上次修改时间:
duilib使用总结 历史版本:
上次修改时间: 2021-09-11 23:21:21