本文整理汇总了C++中CControlUI::GetFixedWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ CControlUI::GetFixedWidth方法的具体用法?C++ CControlUI::GetFixedWidth怎么用?C++ CControlUI::GetFixedWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CControlUI
的用法示例。
在下文中一共展示了CControlUI::GetFixedWidth方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetFloatPos
void CContainerUI::SetFloatPos(int iIndex)
{
// 因为CControlUI::SetPos对float的操作影响,这里不能对float组件添加滚动条的影响
if( iIndex < 0 || iIndex >= m_items.GetSize() ) return;
CControlUI* pControl = static_cast<CControlUI*>(m_items[iIndex]);
if( !pControl->IsVisible() ) return;
if( !pControl->IsFloat() ) return;
SIZE szXY = pControl->GetFixedXY();
SIZE sz = {pControl->GetFixedWidth(), pControl->GetFixedHeight()};
TPercentInfo rcPercent = pControl->GetFloatPercent();
LONG width = m_rcItem.right - m_rcItem.left;
LONG height = m_rcItem.bottom - m_rcItem.top;
RECT rcCtrl = { 0 };
rcCtrl.left = (LONG)(width*rcPercent.left) + szXY.cx;
rcCtrl.top = (LONG)(height*rcPercent.top) + szXY.cy;
rcCtrl.right = (LONG)(width*rcPercent.right) + szXY.cx + sz.cx;
rcCtrl.bottom = (LONG)(height*rcPercent.bottom) + szXY.cy + sz.cy;
pControl->SetPos(rcCtrl, false);
}
示例2: SetPos
void CHorizontalLayoutUI::SetPos(RECT rc, bool bNeedInvalidate)
{
CControlUI::SetPos(rc, bNeedInvalidate);
rc = m_rcItem;
// Adjust for inset
rc.left += m_rcInset.left;
rc.top += m_rcInset.top;
rc.right -= m_rcInset.right;
rc.bottom -= m_rcInset.bottom;
if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) rc.right -= m_pVerticalScrollBar->GetFixedWidth();
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) rc.bottom -= m_pHorizontalScrollBar->GetFixedHeight();
if( m_items.GetSize() == 0) {
ProcessScrollBar(rc, 0, 0);
return;
}
// Determine the minimum size
SIZE szAvailable = { rc.right - rc.left, rc.bottom - rc.top };
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() )
szAvailable.cx += m_pHorizontalScrollBar->GetScrollRange();
if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() )
szAvailable.cy += m_pVerticalScrollBar->GetScrollRange();
int cyNeeded = 0;
int nAdjustables = 0;
int cxFixed = 0;
int nEstimateNum = 0;
SIZE szControlAvailable;
int iControlMaxWidth = 0;
int iControlMaxHeight = 0;
for( int it1 = 0; it1 < m_items.GetSize(); it1++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it1]);
if( !pControl->IsVisible() ) continue;
if( pControl->IsFloat() ) continue;
szControlAvailable = szAvailable;
RECT rcPadding = pControl->GetPadding();
szControlAvailable.cy -= rcPadding.top + rcPadding.bottom;
iControlMaxWidth = pControl->GetFixedWidth();
iControlMaxHeight = pControl->GetFixedHeight();
if (iControlMaxWidth <= 0) iControlMaxWidth = pControl->GetMaxWidth();
if (iControlMaxHeight <= 0) iControlMaxHeight = pControl->GetMaxHeight();
if (szControlAvailable.cx > iControlMaxWidth) szControlAvailable.cx = iControlMaxWidth;
if (szControlAvailable.cy > iControlMaxHeight) szControlAvailable.cy = iControlMaxHeight;
SIZE sz = pControl->EstimateSize(szControlAvailable);
if( sz.cx == 0 ) {
nAdjustables++;
}
else {
if( sz.cx < pControl->GetMinWidth() ) sz.cx = pControl->GetMinWidth();
if( sz.cx > pControl->GetMaxWidth() ) sz.cx = pControl->GetMaxWidth();
}
cxFixed += sz.cx + pControl->GetPadding().left + pControl->GetPadding().right;
sz.cy = MAX(sz.cy, 0);
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
cyNeeded = MAX(cyNeeded, sz.cy + rcPadding.top + rcPadding.bottom);
nEstimateNum++;
}
cxFixed += (nEstimateNum - 1) * m_iChildPadding;
// Place elements
int cxNeeded = 0;
int cxExpand = 0;
if( nAdjustables > 0 ) cxExpand = MAX(0, (szAvailable.cx - cxFixed) / nAdjustables);
// Position the elements
SIZE szRemaining = szAvailable;
int iPosX = rc.left;
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) {
iPosX -= m_pHorizontalScrollBar->GetScrollPos();
}
int iAdjustable = 0;
int cxFixedRemaining = cxFixed;
for( int it2 = 0; it2 < m_items.GetSize(); it2++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it2]);
if( !pControl->IsVisible() ) continue;
if( pControl->IsFloat() ) {
SetFloatPos(it2);
continue;
}
RECT rcPadding = pControl->GetPadding();
szRemaining.cx -= rcPadding.left;
szControlAvailable = szRemaining;
szControlAvailable.cy -= rcPadding.top + rcPadding.bottom;
iControlMaxWidth = pControl->GetFixedWidth();
iControlMaxHeight = pControl->GetFixedHeight();
if (iControlMaxWidth <= 0) iControlMaxWidth = pControl->GetMaxWidth();
if (iControlMaxHeight <= 0) iControlMaxHeight = pControl->GetMaxHeight();
if (szControlAvailable.cx > iControlMaxWidth) szControlAvailable.cx = iControlMaxWidth;
if (szControlAvailable.cy > iControlMaxHeight) szControlAvailable.cy = iControlMaxHeight;
SIZE sz = pControl->EstimateSize(szControlAvailable);
if( sz.cx == 0 ) {
iAdjustable++;
sz.cx = cxExpand;
// Distribute remaining to last element (usually round-off left-overs)
if( iAdjustable == nAdjustables ) {
//.........这里部分代码省略.........
示例3: SetPos
void CVerticalLayoutUI::SetPos(RECT rc)
{
CControlUI::SetPos(rc);
rc = m_rcItem;
// Adjust for inset
rc.left += m_rcInset.left;
rc.top += m_rcInset.top;
rc.right -= m_rcInset.right;
rc.bottom -= m_rcInset.bottom;
if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) rc.right -= m_pVerticalScrollBar->GetFixedWidth();
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) rc.bottom -= m_pHorizontalScrollBar->GetFixedHeight();
if( m_items.GetSize() == 0) {
ProcessScrollBar(rc, 0, 0);
return;
}
// Determine the minimum size
SIZE szAvailable = { rc.right - rc.left, rc.bottom - rc.top };
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() )
szAvailable.cx += m_pHorizontalScrollBar->GetScrollRange();
int nAdjustables = 0;
int cyFixed = 0;
int nEstimateNum = 0;
for( int it1 = 0; it1 < m_items.GetSize(); it1++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it1]);
if( !pControl->IsVisible() ) continue;
if( pControl->IsFloat() ) continue;
SIZE sz = pControl->EstimateSize(szAvailable);
if( sz.cy == 0 ) {
nAdjustables++;
}
else {
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
}
cyFixed += sz.cy + pControl->GetPadding().top + pControl->GetPadding().bottom;
nEstimateNum++;
}
cyFixed += (nEstimateNum - 1) * m_iChildPadding;
// Place elements
int cyNeeded = 0;
int cyExpand = 0;
if( nAdjustables > 0 ) cyExpand = MAX(0, (szAvailable.cy - cyFixed) / nAdjustables);
// Position the elements
SIZE szRemaining = szAvailable;
int iPosY = rc.top;
if( m_pVerticalScrollBar && m_pVerticalScrollBar->IsVisible() ) {
iPosY -= m_pVerticalScrollBar->GetScrollPos();
}
int iPosX = rc.left;
if( m_pHorizontalScrollBar && m_pHorizontalScrollBar->IsVisible() ) {
iPosX -= m_pHorizontalScrollBar->GetScrollPos();
}
int iAdjustable = 0;
int cyFixedRemaining = cyFixed;
for( int it2 = 0; it2 < m_items.GetSize(); it2++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it2]);
if( !pControl->IsVisible() ) continue;
if( pControl->IsFloat() ) {
SetFloatPos(it2);
continue;
}
RECT rcPadding = pControl->GetPadding();
szRemaining.cy -= rcPadding.top;
SIZE sz = pControl->EstimateSize(szRemaining);
if( sz.cy == 0 ) {
iAdjustable++;
sz.cy = cyExpand;
// Distribute remaining to last element (usually round-off left-overs)
// if( iAdjustable == nAdjustables ) {
// sz.cy = MAX(0, szRemaining.cy - rcPadding.bottom - cyFixedRemaining);
// }
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
}
else {
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
// cyFixedRemaining -= sz.cy + rcPadding.top + rcPadding.bottom;
}
// cyFixedRemaining -= m_iChildPadding;
sz.cx = pControl->GetFixedWidth();
if( sz.cx == 0 ) sz.cx = szAvailable.cx - rcPadding.left - rcPadding.right;
if( sz.cx < 0 ) sz.cx = 0;
if( sz.cx < pControl->GetMinWidth() ) sz.cx = pControl->GetMinWidth();
if( sz.cx > pControl->GetMaxWidth() ) sz.cx = pControl->GetMaxWidth();
RECT rcCtrl = { iPosX + rcPadding.left, iPosY + rcPadding.top, iPosX + rcPadding.left + sz.cx, iPosY + sz.cy + rcPadding.top };
pControl->SetPos(rcCtrl);
iPosY += sz.cy + m_iChildPadding + rcPadding.top + rcPadding.bottom;
cyNeeded += sz.cy + rcPadding.top + rcPadding.bottom;
szRemaining.cy -= sz.cy + m_iChildPadding + rcPadding.bottom;
//.........这里部分代码省略.........
示例4: SetPos
void CVerticalLayoutUI::SetPos(const CDuiRect& rc)
{
CControlUI::SetPos(rc);
if( m_items.IsEmpty() ) return;
CDuiRect rct = m_rcItem;
rct.left += m_rcInset.left;
rct.top += m_rcInset.top;
rct.right -= m_rcInset.right;
rct.bottom -= m_rcInset.bottom;
// Determine the width of elements that are sizeable
SIZE szAvailable = {rct.GetWidth(), rct.GetHeight()};
int nAdjustables = 0;
int cyFixed = 0;
int nEstimateNum = 0;
for( int it1 = 0; it1 < m_items.GetSize(); it1++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it1]);
if( !pControl->IsVisible() ) continue;
SIZE sz = pControl->EstimateSize(szAvailable);
if( sz.cy == 0 ) {
nAdjustables++;
}
else {
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
}
cyFixed += sz.cy;
nEstimateNum++;
}
// Place elements
int cyNeeded = 0;
int cyExpand = 0;
if( nAdjustables > 0 ) cyExpand = MAX(0, (szAvailable.cy - cyFixed) / nAdjustables);
// Position the elements
SIZE szRemaining = szAvailable;
int iPosY = rct.top;
int iPosX = rct.left;
int iAdjustable = 0;
int cyFixedRemaining = cyFixed;
for( int it2 = 0; it2 < m_items.GetSize(); it2++ ) {
CControlUI* pControl = static_cast<CControlUI*>(m_items[it2]);
if( !pControl->IsVisible() ) continue;
SIZE sz = pControl->EstimateSize(szRemaining);
if( sz.cy == 0 ) {
iAdjustable++;
sz.cy = cyExpand;
// Distribute remaining to last element (usually round-off left-overs)
if( iAdjustable == nAdjustables ) {
sz.cy = MAX(0, szRemaining.cy - cyFixedRemaining);
}
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
}
else {
if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight();
if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight();
cyFixedRemaining -= sz.cy;
}
sz.cx = pControl->GetFixedWidth();
if( sz.cx == 0 ) sz.cx = szAvailable.cx;
if( sz.cx < 0 ) sz.cx = 0;
if( sz.cx < pControl->GetMinWidth() ) sz.cx = pControl->GetMinWidth();
if( sz.cx > pControl->GetMaxWidth() ) sz.cx = pControl->GetMaxWidth();
RECT rcCtrl = { iPosX, iPosY, iPosX + sz.cx, iPosY + sz.cy};
pControl->SetPos(rcCtrl);
iPosY += sz.cy;
cyNeeded += sz.cy ;
szRemaining.cy -= sz.cy;
}
SIZE sztmp = {m_rcItem.GetWidth(), cyNeeded};
sztmp.cy += m_rcInset.top + m_rcInset.bottom;
SetPostSize(sztmp);
}