CMvcVisualComponent Class
class CMvcVisualComponent: public IVisual, public IBounds2D
The CMvcVisualComponent class provides the basic drawing and positioning interfaces required by objects that will be drawn on a device context. CMvcVisualComponent serves as the ultimate base class for all objects that can be rendered to a DC. A visual component is a light-weight base class that gives you the ability to treat all renderable objects consistently. It maintains size and position information, provides support for hit testing, and rendering.A visual component is a very lightweight object and is the preferred base class when you need many, light visual components that are completely managed by a more intelligent container. The container is responsible for telling the component when to draw, where to draw, how large it should be etc. The visual component knows nothing about real windows, only drawing surfaces passed in via a CDC pointer. Visual components will draw themselves whenever and whereever the container instructs. This includes visual components positioned to partially or fully overlap.
A visual component maintains a bounding rectangle that describes the area of its container the component occupies. There is a important caveat here: the size and position of the component is measured in the logical unit metrics established by the container. In other words, if the container is measuring its client area in units of inches, then a position of (2, 1) will mean the visual component is positioned 2 inches from the container's left edge and 1 inch from the containers top edge. For this reason, the units of a visual component's bounds are known as external units, denoting that the bound's unit of measure are established externally. Also, notice that the subcomponent's origin is (typically) measured relative to its container's origin. Therefore, moving the container will automatically move all subcomponents.
Defined in: MvcVisualComponent.h
Class Members
CRect m_rc
Bounds of the visual component with respect to its container. This is
virtual CPoint GetOrigin() const
Get the origin of this component relative to its container and in the container's units
virtual CPoint SetOrigin(int x, int y)
Set the origin of this component relative to its container and in the container's units
virtual CPoint OffsetOrigin(int xOff, int yOff)
Offsets the component's origin by a delta
virtual CPoint MoveOrigin(int xOff,int yOff)
Move the component's origin by a delta
virtual CSize GetSize() const
Returns the width and height of the component
virtual CSize SetSize(int cx, int cy)
Sets the width and height of the component
virtual CSize ScaleBounds(int xNum, int xDenom, int yNum, int yDenom, bool bAnchorCenter = false)
Scales the bounds of the visual component
virtual CRect GetBounds() const
Get the component's bounding rectangle in the logical units defined by the container
inline CPoint TopLeft() const
Get the origin of this component
inline CPoint TopRight() const
Get the upper, right edge of the component
inline CPoint BottomLeft() const
Get the lower, left edge of the component
inline CPoint BottomRight() const
Get the lower, right edge of the component
virtual void GetMargins(CRect& rcMargins)
Get the margins around the bounds of this visual component.
BOOL ContainsPoint(const CPoint& pt) const
Tests whether a point lies within the component's bounds
BOOL Intersects(const CRect& rc) const
Tests whether the rectangle intersects the component's bounds
virtual void Sprint(CString& strDesc)
Print a description of this visual part to the specified string
virtual void Draw(CDC* pDC)
Draw the component to a device context.
virtual void OnPrepareDC(CDC* pDC)
Prepare device context for rendering.
virtual void OnCleanupDC(CDC* pDC)
Cleanup device context after rendering.
virtual void OnInitialUpdate()
Initializes the visual component
inline void NormalizeBounds()
Normalize the bounding rectangle
virtual ULONG STDMETHODCALLTYPE AddRef()
Add a reference to this object.
virtual ULONG STDMETHODCALLTYPE Release()
Release a reference to this object.