本文整理汇总了C++中ViewGroup::GetChildDrawingOrder方法的典型用法代码示例。如果您正苦于以下问题:C++ ViewGroup::GetChildDrawingOrder方法的具体用法?C++ ViewGroup::GetChildDrawingOrder怎么用?C++ ViewGroup::GetChildDrawingOrder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ViewGroup
的用法示例。
在下文中一共展示了ViewGroup::GetChildDrawingOrder方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsOnTop
/**
* Returns true if view would be drawn on top of comparedWith or false otherwise.
* view and comparedWith are siblings with the same parent. This uses the logic
* that dispatchDraw uses to determine which View should be drawn first.
*/
Boolean GhostView::IsOnTop(
/* [in] */ IView* view,
/* [in] */ IView* comparedWith)
{
AutoPtr<IViewParent> temp;
view->GetParent((IViewParent**)&temp);
IViewGroup* parent = IViewGroup::Probe(temp);
ViewGroup* parentVG = (ViewGroup*)parent;
Int32 childrenCount;
parent->GetChildCount(&childrenCount);
AutoPtr<IList> list = parentVG->BuildOrderedChildList();
IArrayList* preorderedList = IArrayList::Probe(list);
Boolean customOrder = preorderedList == NULL
&& parentVG->IsChildrenDrawingOrderEnabled();
// This default value shouldn't be used because both view and comparedWith
// should be in the list. If there is an error, then just return an arbitrary
// view is on top.
Boolean isOnTop = TRUE;
for (Int32 i = 0; i < childrenCount; i++) {
Int32 childIndex = customOrder ? parentVG->GetChildDrawingOrder(childrenCount, i) : i;
AutoPtr<IView> child;
if (NULL == preorderedList) {
parent->GetChildAt(childIndex, (IView**)&child);
} else {
AutoPtr<IInterface> it;
preorderedList->Get(childIndex, (IInterface**)&it);
child = IView::Probe(it);
}
if (view == child) {
isOnTop = FALSE;
break;
} else if (comparedWith == child) {
isOnTop = TRUE;
break;
}
}
if (NULL != preorderedList) {
preorderedList->Clear();
}
return isOnTop;
}