UIGearsControl控件的使用
功能功能
UIGearsControl是所有控件的基类,其方法和事件是所有控件所公用的。
控件事件介绍
1. UIG_CTRL_RESIZE
参数名 | 事件数值 | 事件含义 | 事件参数1 | 事件参数2 |
---|---|---|---|---|
UIG_CTRL_RESIZE | 0x10 | 控件大小发生改变 | 无 | 无 |
事件处理示例:
ON_UIG_RESIZE(CTestDlg)
ON_UIG_BN_CLICKED(_btnOpen, ResizeEvent)
END_UIG_MESSAGE_MAP()
...
void CDemoDlg::ResizeEvent(IUIGearsControl* control)
{
if (control == _btnOpen)
{
}
}
2. UIG_CTRL_VISIBLE_CHANGE
参数名 | 事件数值 | 事件含义 | 事件参数1 | 事件参数2 |
---|---|---|---|---|
UIG_CTRL_VISIBLE_CHANGE | 0x11 | 控件显示状态发生改变 | 无 | 无 |
事件处理示例:
BEGIN_UIG_MESSAGE_MAP(CTestDlg)
ON_UIG_VISIBLECHANGE(_btnOpen, VisibleChange)
END_UIG_MESSAGE_MAP()
...
void CDemoDlg::VisibleChange(IUIGearsControl* control)
{
if (control == _btnOpen)
{
}
}
接口介绍
1. Invalidate
接口描述: 重新绘制控件 注意:此操作为异步操作
参数值:
无
返回值: 无
示例:
button.Invalidate()
2. Invalidate(x, y, w, h)
接口描述: 对窗口指定区域进行重绘,指定的位置为窗口上的绝对坐标位置, 左上角为0,0, 右下角为窗口的宽度,高度。
参数值:
参数名 参数类型 参数含义 x int 左侧位置 y int 上侧位置 w int 重绘宽度 w int 重绘高度 返回值: 无
示例:
button.Invalidate(10, 10, 100, 100);
3. Resize
接口描述: 重新计算控件及其内部子控件的位置和大小 注意:此操作为异步操作,不会立即执行
参数值:
无
返回值: 无
示例:
button.Resize();
4. ResizeSync
接口描述: 立即计算控件的及其子控件的位置和大小 注意:此操作为同步操作,立即执行大小计算
参数值:
无
返回值: 无
示例:
button.ResizeSync();
5. AppendEventReceiver
接口描述: 给控件设置事件接收器,可以给控件设置多个事件接收器
参数值:
参数名 参数类型 参数含义 pDelegateObj IEventRecevier* 事件接收器指针 返回值: 无
示例: 通过以下的步骤就可以将button对象的消息处理托管到MyHandleClass类的HandleEvent方法中
class MyHandleClass { bool HandleEvent(void* pMsg) { NotifyInfo *pNotify = (NotifyInfo*)pMsg; } } ... CDelegateObj<MyHandleClass, MyHandleClass> m_delegate; m_delegate.SetDelegate(this, &MyHandleClass::HandleEvent); ... button.AppendEventReceiver(&m_delegateObj);
NotifyInfo的定义如下
struct NotifyInfo { unsigned int nMsgId; // 消息id UIGears::IUIGearsControl *pCtrl; // 触发消息的控件 void* ctrlPtr; // 内部使用 PARAM wParam; // 事件参数1 PARAM lParam; // 事件参数2 };
6. RemoveEventReceiver
接口描述: 将控件的某个事件处理器移除掉
参数值:
参数名 参数类型 参数含义 pDelegateObj IEventRecevier* 事件接收器指针 返回值: 无
示例:
... CDelegateObj<MyHandleClass, MyHandleClass> m_delegate; ... button.RemoveEventReceiver(&m_delegate);
7. RemoveAllEventReceiver
接口描述: 将控件的所有的事件处理器移除掉
参数值:
无
返回值: 无
示例:
button.RemoveAllEventReceiver();
8. SetVisibility
接口描述: 设置控件是否显示
参数值:
参数名 参数类型 参数含义 visibility bool 是否显示 返回值: 无
示例:
button.SetVisibility(false); // useIcon == true
9. GetVisibility
接口描述: 获取控件的显示状态
参数值:
无
返回值: bool
示例:
bool visible = button.GetVisibility();
10. SetEnable
接口描述: 设置控件是否启用,如果为false则禁用控件,用户将不可点击该控件,所有的控件高亮按下等状态也会禁用
参数值:
参数名 参数类型 参数含义 enable bool 是否启用 返回值: 无
示例:
button.SetEnable(false);
11. GetEnable
接口描述: 获取控件的启用状态
参数值:
无
返回值: bool
示例:
bool enable = button.GetEnable();
12. SetRect
接口描述: 设置控件的坐标位置,该坐标为相对于窗口的坐标,左上角为0,0
参数值:
参数名 参数类型 参数含义 x int 左侧位置 y int 上侧位置 w int 重绘宽度 w int 重绘高度 返回值: 无
示例:
button.SetRect(10, 10, 100, 100);
13. GetControlByName
接口描述: 根据名称获取子控件
参数值:
无
返回值:
UIGears::IUIGearsControl*
示例:
UIGears::IUIGearsControl* childCtrl = button.GetControlByName(_T("btnCancel"));
14. GetWindowX
接口描述: 获取控件在窗口上的X轴坐标位置
参数值:
无
返回值:
int
示例:
int x = button.GetWindowX();
15. GetWindowY
接口描述: 获取控件在窗口上的Y轴坐标位置
参数值:
无
返回值:
int
示例:
int x = button.GetWindowY();
16. GetX
接口描述: 获取控件在父控件上的X轴坐标位置
参数值:
无
返回值:
int
示例:
int x = button.GetX();
17. GetY
接口描述: 获取控件在父控件上的Y轴坐标位置
参数值:
无
返回值:
int
示例:
int x = button.GetY();
18. GetWidth
接口描述: 获取控件的宽度
参数值:
无
返回值:
int
示例:
int w = button.GetWidth();
19. GetHeight
接口描述: 获取控件的高区
参数值:
无
返回值:
int
示例:
int x = button.GetY();
20. SetX
接口描述: 设置控件距离父控件左侧的距离
参数值:
参数名 参数类型 参数含义 x int 距离左侧的距离 返回值: 无
示例:
button.SetX(0);
21. SetY
接口描述: 设置控件距离父控件上方的距离
参数值:
参数名 参数类型 参数含义 y int 距离上方的距离 返回值: 无
示例:
button.SetY(0);
22. SetWidth
接口描述: 设置控件的宽度
参数值:
参数名 参数类型 参数含义 w int 控件宽度 返回值: 无
示例:
button.SetWidth(100);
23. SetHeight
接口描述: 设置控件的高度
参数值:
参数名 参数类型 参数含义 w int 控件高度 返回值: 无
示例:
button.SetHeight(100);
24. GetWindowPos
接口描述: 获取控件在窗口上的位置
参数值:
参数名 参数类型 参数含义 x int& 控件x坐标位置 x int& 控件y坐标位置 返回值: 无
示例:
int x = 0; int y = 0; button.GetWindowPos(x, y);
25. GetLayout
接口描述: 获取控件的布局对象 注意:如果该控件使用的是绝对布局,那么获取到的布局对象为空
参数值:
无
返回值:
UIGears::IUIGearsLayout*
布局对象的继承关系是
// 布局基类 class IUIGearsLayout; // 停靠布局 class IUIGearsDockLayout : public IUIGearsLayout // 百分比布局 class IUIGearsPercentageLayout : public IUIGearsLayout // 填充父控件布局 class IUIGearsFillLayout : public IUIGearsLayout
示例:
UIGears::IUIGearsLayout* playout = button.GetLayout();
26. SetLayout
接口描述: 给控件设置布局对象
参数值:
参数名 参数类型 参数含义 type UIGears::UIGLayoutType 控件x坐标位置
UIGears::UIGLayoutType 值分别为:
enum UIGLayoutType
{
UIG_LAYOUT_DOCK = 0,
UIG_LAYOUT_FILL,
UIG_LAYOUT_PERCENTAGE,
UIG_LAYOUT_ABOSOLUTE
};
返回值:
UIGears::IUIGearsLayout*
布局对象的继承关系是
// 布局基类 class IUIGearsLayout; // 停靠布局 class IUIGearsDockLayout : public IUIGearsLayout // 百分比布局 class IUIGearsPercentageLayout : public IUIGearsLayout // 填充父控件布局 class IUIGearsFillLayout : public IUIGearsLayout
示例:
UIGears::IUIGearsLayout* playout = button.GetLayout();
27. GetChildrenCount
接口描述: 获取该控件的子控件数量
参数值:
无
返回值: int
示例:
int childCount = button.GetChildrenCount();
28. GetControlByIndex
接口描述: 通过索引号获取子控件
参数值:
参数名 参数类型 参数含义 index int 子控件的索引号,不能超过子控件的数量 返回值:
UIGears::IUIGearsControl*
示例:
int childCount = background.GetChildrenCount(); for(int i = 0; i < childCount; ++i) { UIGears::IUIGearsControl* childCtrl = background.GetControlByIndex(i); }
29. RemoveChild
接口描述: 删除子控件
参数值:
参数名 参数类型 参数含义 pEle UIGears::IUIGearsControl* 子控件的指针 返回值:
bool // true 为成功, false为失败
示例:
int childCount = background.GetChildrenCount(); if(childCount > 0) { UIGears::IUIGearsControl* childCtrl = background.GetControlByIndex(0); bool result = background.RemoveChild(childCtrl); }
30. GetControlName
接口描述: 获取控件的名称
参数值:
无
返回值:
const tchar*
示例:
const tchar* pName = button.GetControlName();
31. GetControlTypeName
接口描述: 获取控件的类型名称
参数值:
无
返回值:
const tchar*
示例:
const tchar* pTypeName = button.GetControlTypeName();
32. SetControlName
接口描述: 修改控件的名称
参数值:
参数名 参数类型 参数含义 name const tchar* 控件新的名称 返回值: 无
示例:
button.SetControlName(_T("newName"));
33. SetUserData
接口描述: 设置一个用户自定义数据
参数值:
参数名 参数类型 参数含义 data PARAM 用户数据
PARAM 类型定义为 64位程序为8字节,32位程序为4字节
#ifdef _WIN64
typedef __int64 PARAM;
#else
typedef int PARAM;
#endif
返回值: 无
示例:
void* pInfo = NULL; ... button.SetUserData((PARAM)pInfo);
34 GetUserData
接口描述: 获取用户自定义数据
参数值:
无
返回值: PARAM PARAM 类型定义为 64位程序为8字节,32位程序为4字节
#ifdef _WIN64 typedef __int64 PARAM; #else typedef int PARAM; #endif
示例:
void* pInfo = NULL; ... pInfo = (void*)button.GetUserData();
35. GetParentControl
接口描述: 获取父控件的指针
参数值:
无
返回值:
UIGears::IUIGearsControl*
示例:
UIGears::IUIGearsControl* parent = button.GetParentControl();
36. SetTooltip
接口描述: 设置控件的Tooltip文本
参数值:
参数名 参数类型 参数含义 tooltip const tchar* tooltip文本 返回值: 无
示例:
button.SetTooltip(_T("click here"));
37. GetTooltip
接口描述: 获取控件的Tooltip文本
参数值:
无
返回值:
const tchar*
示例:
std::wstring tooltip = button.GetTooltip();
38. Copy
接口描述: 将当前控件和子控件拷贝到指定控件下
参数值:
参数名 参数类型 参数含义 name const tchar* 新控件名称 pParent UIGears::IUIGearsControl* 父控件指针 insertPos int 在父控件的位置,默认值-1,即插入到父控件的末尾控件 返回值: 返回新拷贝出来的控件
UIGears::IUIGearsControl*
示例: 将m_conItemTemp拷贝一个到m_mainContainer下,并获取新控件里面的子控件label,然后设置文本内容
std::wstring w = _T("new label"); UIGears::IUIGearsControl* copyCtrl = m_conItemTemp->Copy(_T("newItem"), m_mainContainer); UIGears::IUIGLabel* label = (UIGears::IUIGLabel*)copyCtrl->GetControlByName(_T("label")); label->SetText(w.c_str());