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); }