本文整理汇总了C++中CLayout::GetElementDispNode方法的典型用法代码示例。如果您正苦于以下问题:C++ CLayout::GetElementDispNode方法的具体用法?C++ CLayout::GetElementDispNode怎么用?C++ CLayout::GetElementDispNode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CLayout
的用法示例。
在下文中一共展示了CLayout::GetElementDispNode方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PositionChanged
//+====================================================================================
//
// Method: PositionChanged
//
// Synopsis: Hit the Layout for the size you should be and ask your adorner for it to give
// you your position based on this
//
//------------------------------------------------------------------------------------
void CFocusAdorner::PositionChanged(const CSize* psize)
{
Assert(_pElement);
Assert(_pElement->GetFirstBranch());
Assert(_pView->IsInState(CView::VS_OPEN));
if(_pDispNode)
{
CLayout* pLayout = _pElement->GetUpdatedNearestLayout();
CTreeNode* pTreeNode = _pElement->GetFirstBranch();
BOOL fRelative = pTreeNode->GetCharFormat()->_fRelative;
CDispNode* pDispParent = _pDispNode->GetParentNode();
CDispNode* pDispNode = NULL;
Assert(_pShape);
// Get the display node which contains the element with focus
// (If the focus display node is not yet anchored in the display tree, pretend the element
// is not correct as well. After the focus display node is anchored, this routine will
// get called again and can correctly associate the display nodes at that time.)
if(pDispParent)
{
// BUGBUG: Move this logic down into GetElementDispNode (passing a flag so that GetElementDispNode
// can distinguish between "find nearest" and "find exact" with this call being a "find nearest"
// and virtually all others being a "find exact" (brendand)
CElement* pDisplayElement = NULL;
if(!pTreeNode->IsPositionStatic() || _pElement->HasLayout())
{
pDisplayElement = _pElement;
}
else if(!fRelative)
{
pDisplayElement = pLayout->ElementOwner();
}
else
{
CTreeNode* pDisplayNode = pTreeNode->GetCurrentRelativeNode(pLayout->ElementOwner());
Assert(pDisplayNode); // This should never be NULL, but be safe anyway
if(pDisplayNode)
{
pDisplayElement = pDisplayNode->Element();
}
}
Assert(pDisplayElement); // This should never be NULL, but be safe anyway
if(pDisplayElement)
{
pDispNode = pLayout->GetElementDispNode(pDisplayElement);
}
}
// Verify that the display node which contains the element with focus and the focus display node
// are both correctly anchored in the display tree (that is, have a common parent)
// (If they do not, this routine will get called again once both get correctly anchored
// after layout is completed)
if(pDispNode)
{
CDispNode* pDispNodeTemp;
for(pDispNodeTemp=pDispNode;
pDispNodeTemp&&pDispNodeTemp!=pDispParent;
pDispNodeTemp=pDispNodeTemp->GetParentNode()) ;
if(!pDispNodeTemp)
{
pDispNode = NULL;
}
Assert(!pDispNode || pDispNodeTemp==pDispParent);
}
if(pDispNode)
{
if(!psize || _dnl!=DISPNODELAYER_FLOW)
{
CPoint ptFromOffset(_afxGlobalData._Zero.pt);
CPoint ptToOffset(_afxGlobalData._Zero.pt);
if(!_fTopLeftValid)
{
CRect rc;
_pShape->GetBoundingRect(&rc);
_pShape->OffsetShape(-rc.TopLeft().AsSize());
_ptTopLeft = rc.TopLeft();
if(!_pElement->HasLayout() && fRelative)
{
CPoint ptOffset;
//.........这里部分代码省略.........