最近,经常用DuiDesigner来画xml.
当xml元素较多, 在左边的控件视图超过一屏时,点击右边的文件视图时,经常不能确定该选中的元素在控件视图的位置.
眼睛都看花了,还是找不到该元素在控件视图的位置~
画xml时,通常都是按照设计图,将元素摆好。然后将对应元素或父节点改名, 这时,要确定改名的元素是否为要改的元素名称。
这时,必须要确定该元素在控件视图中的位置. 每当这时,都感到很蛋疼, 找不到控件视图中被选中的元素节点位置~.
e.g. xml控件元素和父节点元素叠在一起,必须在控件视图中选中后,确定是要改的元素节点才能改名.
e.g. 一个Label和一个Button同样大小,叠在一起.
今天正好想起这件事,跟进 DuiDesigner, 改了一个函数,搞定~
void CClassView::SelectUITreeItem(CControlUI* pControl)
{
HTREEITEM hItemCur = NULL;
HTREEITEM hItemPrev = NULL; ///< 上一个被选中的Item
if(pControl==NULL)
{
return;
}
if (pControl->GetTag() > 0)
{
hItemPrev = m_wndClassView.GetSelectedItem();
if (NULL != hItemPrev)
{
/// 清掉上一次选择的Item为不选择状态状态
m_wndClassView.SetItemState(hItemPrev, 0, TVIS_BOLD | TVIS_SELECTED);
}
hItemCur = (HTREEITEM)(((ExtendedAttributes*)pControl->GetTag())->hItem);
if (NULL != hItemCur)
{
/// 设置这次选中的Item为突出显示
m_wndClassView.SelectItem(hItemCur);
m_wndClassView.SetItemState(hItemCur,TVIS_BOLD | TVIS_SELECTED,TVIS_BOLD | TVIS_SELECTED);
}
}
}
效果 :
每点击右边文件视图时,左边的控件视图,就突出显示元素的节点位置.
当屏幕元素超过一屏时,左边的控件视图,直接滚动到目标元素(这是原始工程的效果),只是因为没有突出显示Item, 所以看不太出来.
当xml文件较大(元素较多,包含关系比较复杂)时,这次修改的效果,就更明显。
效果图: