CPoint
Class
Similar to the Windows POINT
structure.
Syntax
class CPoint : public tagPOINT
Members
Public Constructors
Name | Description |
---|---|
CPoint::CPoint |
Constructs a CPoint . |
Public Methods
Name | Description |
---|---|
CPoint::Offset |
Adds values to the x and y members of the CPoint . |
Public Operators
Name | Description |
---|---|
CPoint::operator - |
Returns the difference of a CPoint and a SIZE , or the negation of a POINT , or the CSize difference between two POINT s, or the offset by a negative SIZE . |
CPoint::operator != |
Checks for inequality between two POINT s. |
CPoint::operator + |
Returns the sum of a CPoint and a SIZE or POINT , or a CRect offset by a SIZE . |
CPoint::operator += |
Offsets CPoint by adding a SIZE or POINT . |
CPoint::operator -= |
Offsets CPoint by subtracting a SIZE or POINT . |
CPoint::operator == |
Checks for equality between two POINT s. |
Remarks
It also includes member functions to manipulate CPoint
and POINT
structures.
A CPoint
object can be used wherever a POINT
structure is used. The operators of this class that interact with a SIZE
accept either CSize
objects or SIZE
structures, since the two are interchangeable.
Note
This class is derived from the tagPOINT
structure. (The name tagPOINT
is a less commonly used name for the POINT
structure.) This means that the data members of the POINT
structure, x
and y
, are accessible data members of CPoint
.
Note
For more information on shared utility classes (like CPoint
), see Shared Classes.
Inheritance Hierarchy
tagPOINT
CPoint
Requirements
Header: atltypes.h
CPoint::CPoint
Constructs a CPoint
object.
CPoint() throw();
CPoint(int initX, int initY) throw();
CPoint(POINT initPt) throw();
CPoint(SIZE initSize) throw();
CPoint(LPARAM dwPoint) throw();
Parameters
initX
Specifies the value of the x
member of CPoint
.
initY
Specifies the value of the y
member of CPoint
.
initPt
POINT
structure or CPoint
that specifies the values used to initialize CPoint
.
initSize
SIZE
structure or CSize
that specifies the values used to initialize CPoint
.
dwPoint
Sets the x
member to the low-order word of dwPoint
and the y
member to the high-order word of dwPoint
.
Remarks
If no arguments are given, x
and y
members are set to 0.
Example
CPoint ptTopLeft(0, 0);
// works from a POINT, too
POINT ptHere;
ptHere.x = 35;
ptHere.y = 95;
CPoint ptMFCHere(ptHere);
// works from a SIZE
SIZE sHowBig;
sHowBig.cx = 300;
sHowBig.cy = 10;
CPoint ptMFCBig(sHowBig);
// or from a DWORD
DWORD dwSize;
dwSize = MAKELONG(35, 95);
CPoint ptFromDouble(dwSize);
ASSERT(ptFromDouble == ptMFCHere);
CPoint::Offset
Adds values to the x
and y
members of the CPoint
.
void Offset(int xOffset, int yOffset) throw();
void Offset(POINT point) throw();
void Offset(SIZE size) throw();
Parameters
xOffset
Specifies the amount to offset the x
member of the CPoint
.
yOffset
Specifies the amount to offset the y
member of the CPoint
.
point
Specifies the amount (POINT
or CPoint
) to offset the CPoint
.
size
Specifies the amount (SIZE
or CSize
) to offset the CPoint
.
Example
CPoint ptStart(100, 100);
ptStart.Offset(35, 35);
CPoint ptResult(135, 135);
ASSERT(ptStart == ptResult);
// works with POINT, too
ptStart = CPoint(100, 100);
POINT pt;
pt.x = 35;
pt.y = 35;
ptStart.Offset(pt);
ASSERT(ptStart == ptResult);
// works with SIZE, too
ptStart = CPoint(100, 100);
SIZE size;
size.cx = 35;
size.cy = 35;
ptStart.Offset(size);
ASSERT(ptStart == ptResult);
CPoint::operator ==
Checks for equality between two POINT
s.
BOOL operator==(POINT point) const throw();
Parameters
point
Contains a POINT
structure or CPoint
object.
Return Value
Nonzero if the POINT
s are equal; otherwise 0.
Example
CPoint ptFirst(256, 128);
CPoint ptTest(256, 128);
ASSERT(ptFirst == ptTest);
// works with POINTs, too
POINT pt;
pt.x = 256;
pt.y = 128;
ASSERT(ptTest == pt);
// note that pt == ptTest isn't correct!
CPoint::operator !=
Checks for inequality between two POINT
s.
BOOL operator!=(POINT point) const throw();
Parameters
point
Contains a POINT
structure or CPoint
object.
Return Value
Nonzero if the POINT
s aren't equal; otherwise 0.
Example
CPoint ptFirst(256, 128);
CPoint ptTest(111, 333);
ASSERT(ptFirst != ptTest);
// works with POINTs, too
POINT pt;
pt.x = 333;
pt.y = 111;
ASSERT(ptTest != pt);
// note that pt != ptTest isn't correct!
CPoint::operator +=
The first overload adds a SIZE
to the CPoint
.
void operator+=(SIZE size) throw();
void operator+=(POINT point) throw();
Parameters
size
Contains a SIZE
structure or CSize
object.
point
Contains a POINT
structure or CPoint
object.
Remarks
The second overload adds a POINT
to the CPoint
.
In both cases, addition is done by adding the x
(or cx
) member of the right-hand operand to the x
member of the CPoint
and adding the y
(or cy
) member of the right-hand operand to the y
member of the CPoint
.
For example, adding CPoint(5, -7)
to a variable that contains CPoint(30, 40)
changes the variable to CPoint(35, 33)
.
Example
CPoint ptStart(100, 100);
CSize szOffset(35, 35);
ptStart += szOffset;
CPoint ptResult(135, 135);
ASSERT(ptResult == ptStart);
// also works on SIZE
ptStart = CPoint(100, 100);
SIZE sz;
sz.cx = 35;
sz.cy = 35;
ptStart += sz;
ASSERT(ptResult == ptStart);
CPoint::operator -=
The first overload subtracts a SIZE
from the CPoint
.
void operator-=(SIZE size) throw();
void operator-=(POINT point) throw();
Parameters
size
Contains a SIZE
structure or CSize
object.
point
Contains a POINT
structure or CPoint
object.
Remarks
The second overload subtracts a POINT
from the CPoint
.
In both cases, subtraction is done by subtracting the x
(or cx
) member of the right-hand operand from the x
member of the CPoint
and subtracting the y
(or cy
) member of the right-hand operand from the y
member of the CPoint
.
For example, subtracting CPoint(5, -7)
from a variable that contains CPoint(30, 40)
changes the variable to CPoint(25, 47)
.
Example
CPoint ptStart(100, 100);
CSize szOffset(35, 35);
ptStart -= szOffset;
CPoint ptResult(65, 65);
ASSERT(ptResult == ptStart);
// also works on SIZE
ptStart = CPoint(100, 100);
SIZE sz;
sz.cx = 35;
sz.cy = 35;
ptStart -= sz;
ASSERT(ptResult == ptStart);
CPoint::operator +
Use this operator to offset CPoint
by a CPoint
or CSize
object, or to offset a CRect
by a CPoint
.
CPoint operator+(SIZE size) const throw();
CPoint operator+(POINT point) const throw();
CRect operator+(const RECT* lpRect) const throw();
Parameters
size
Contains a SIZE
structure or CSize
object.
point
Contains a POINT
structure or CPoint
object.
lpRect
Contains a pointer to a RECT
structure or CRect
object.
Return Value
A CPoint
that is offset by a SIZE
, a CPoint
that is offset by a POINT
, or a CRect
offset by a POINT
.
Remarks
For example, using one of the first two overloads to offset the point CPoint(25, -19)
by a point CPoint(15, 5)
or size CSize(15, 5)
returns the value CPoint(40, -14)
.
Adding a CRect
to a POINT
returns the CRect
after being offset by the x
and y
values specified in the POINT
. For example, using the last overload to offset a rectangle CRect(125, 219, 325, 419)
by a point CPoint(25, -19)
returns CRect(150, 200, 350, 400)
.
Example
CPoint ptStart(100, 100);
CSize szOffset(35, 35);
CPoint ptEnd;
ptEnd = ptStart + szOffset;
CPoint ptResult(135, 135);
ASSERT(ptResult == ptEnd);
// also works on SIZE
ptStart = CPoint(100, 100);
SIZE sz;
sz.cx = 35;
sz.cy = 35;
ptEnd = ptStart + sz;
ASSERT(ptResult == ptEnd);
CPoint::operator -
Use one of the first two overloads to subtract a CPoint
or CSize
object from CPoint
.
CSize operator-(POINT point) const throw();
CPoint operator-(SIZE size) const throw();
CRect operator-(const RECT* lpRect) const throw();
CPoint operator-() const throw();
Parameters
point
A POINT
structure or CPoint
object.
size
A SIZE
structure or CSize
object.
lpRect
A pointer to a RECT
structure or a CRect
object.
Return Value
A CSize
that is the difference between two POINT
s, a CPoint
that is offset by the negation of a SIZE
, a CRect
that is offset by the negation of a POINT
, or a CPoint
that is the negation of a POINT
.
Remarks
The third overload offsets a CRect
by the negation of CPoint
. Finally, use the unary operator to negate CPoint
.
For example, using the first overload to find the difference between two points CPoint(25, -19)
and CPoint(15, 5)
returns CSize(10, -24)
.
Subtracting a CSize
from CPoint
does the same calculation as above but returns a CPoint
object, not a CSize
object. For example, using the second overload to find the difference between the point CPoint(25, -19)
and the size CSize(15, 5)
returns CPoint(10, -24)
.
Subtracting a rectangle from a POINT
returns the rectangle offset by the negatives of the x
and y
values specified in the POINT
. For example, using the last overload to offset the rectangle CRect(125, 200, 325, 400)
by the point CPoint(25, -19)
returns CRect(100, 219, 300, 419)
.
Use the unary operator to negate a POINT
. For example, using the unary operator with the point CPoint(25, -19)
returns CPoint(-25, 19)
.
Example
// example for CPoint subtraction
CPoint ptStart(100, 100);
CSize szOffset(35, 35);
CPoint ptEnd;
ptEnd = ptStart - szOffset;
CPoint ptResult(65, 65);
ASSERT(ptResult == ptEnd);
// also works on SIZE
ptStart = CPoint(100, 100);
SIZE sz;
sz.cx = 35;
sz.cy = 35;
ptEnd = ptStart - sz;
ASSERT(ptResult == ptEnd);
// example for CPoint unary operator
CPoint pt(35, 35);
pt = -pt;
CPoint ptNeg(-35, -35);
ASSERT(pt == ptNeg);
See also
MFC Sample MDI
Hierarchy Chart
POINT
Structure
CRect
Class
CSize
Class