BOOL CPie::OnDragEnd(int nHitTest,CPointF point) { REAL dx = m_pWnd->GetStartPos().x; REAL dy = m_pWnd->GetStartPos().y; switch (nHitTest) { case TopLeft: m_rc.left = point.x + dx; m_rc.top = point.y + dy; break; case Top: m_rc.top = point.y + dy; break; case TopRight: m_rc.right = point.x + dx; m_rc.top = point.y + dy; break; case Right: m_rc.right = point.x + dx; break; case BottomRight: m_rc.right = point.x + dx; m_rc.bottom = point.y + dy; break; case Bottom: m_rc.bottom = point.y + dy; break; case BottomLeft: m_rc.left = point.x + dx; m_rc.bottom = point.y + dy; break; case Left: m_rc.left = point.x + dx; break; case Start: m_fStartAngel = EllipseHelper::Angel(m_rc,point + CPointF(dx,dy)); break; case End: m_fEndAngel = EllipseHelper::Angel(m_rc,point + CPointF(dx,dy)); break; case Body: m_rc.OffsetRect(point.x-m_pWnd->GetMarkPos().x,point.y-m_pWnd->GetMarkPos().y); break; default: ASSERT(FALSE); } return TRUE; }
inline CPointF CRoundRect::GetEllipseMarkPos(void) const { return CPointF(m_rc.left+m_rc.Width()*m_fXEllipse/2.0f,m_rc.top+m_rc.Height()*m_fYEllipse/2.0f); }