最新文�? QNX的PCI_Server架构和接口 QNX初始化:startup.sh脚本 Wapper_for_PCIe_Core常见名词理解 PCIe_for_Synopsys_Specification和虚拟化技术探究 IOMMU框架和SMMUv3驱动代码分析
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
Summary 历史版本:
上次修改时间:
布局容器 历史版本:
上次修改时间: 2021-09-08 09:51:11
\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
选择框控件 历史版本:
上次修改时间: 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
0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号