CPoint クラス

Windows の POINT 構造体と同様のものです。

構文

class CPoint : public tagPOINT

メンバー

パブリック コンストラクター

名前 説明
CPoint::CPoint CPoint を構築します。

パブリック メソッド

名前 説明
CPoint::Offset CPointx および y メンバーに値を追加します。

パブリック演算子

名前 説明
CPoint::operator - CPointSIZE の差、POINT の否定、2 つの POINT 間の CSize の差、または負の SIZE によるオフセットを返します。
CPoint::operator != 2 つの POINT が等しくないかどうかを確認します。
CPoint::operator + CPointSIZE または POINT の合計、あるいは SIZE による CRect オフセットを返します。
CPoint::operator += SIZE または POINT を加算することで CPoint をオフセットします。
CPoint::operator -= SIZE または POINT を減算することで CPoint をオフセットします。
CPoint::operator == 2 つの POINT が等しいかどうかを確認します。

解説

CPoint および POINT 構造体を操作するためのメンバー関数も含まれます。

CPoint オブジェクトは、POINT 構造体が使用されている場所であればどこでも使用できます。 SIZE を操作するこのクラスの演算子では、CSize オブジェクトまたは SIZE 構造体を受け入れます。これら 2 つは交換可能であるためです。

Note

このクラスは、tagPOINT 構造体から派生しています (この名前tagPOINTは、構造体にはあまり使われる名前POINTではありません)。つまり、構造体のデータ メンバーPOINTxおよび y.CPoint

Note

共有ユーティリティ クラス (CPoint など) の詳細については、「共有クラス」を参照してください。

継承階層

tagPOINT

CPoint

必要条件

ヘッダー:atltypes.h

CPoint::CPoint

CPoint オブジェクトを構築します。

CPoint() throw();
CPoint(int initX, int initY) throw();
CPoint(POINT initPt) throw();
CPoint(SIZE initSize) throw();
CPoint(LPARAM dwPoint) throw();

パラメーター

initX
xCPoint メンバーの値を指定します。

initY
yCPoint メンバーの値を指定します。

initPt
CPoint の初期化に使用される値を指定する POINT 構造体または CPoint

initSize
CPoint の初期化に使用される値を指定する SIZE 構造体または CSize

dwPoint
dwPoint の下位ワードに x メンバー、dwPoint の上位ワードに y メンバーを設定します。

解説

引数を指定しない場合、x メンバーおよび y メンバーは 0 に設定されます。

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

CPointx および y メンバーに値を追加します。

void Offset(int xOffset, int yOffset) throw();
void Offset(POINT point) throw();
void Offset(SIZE size) throw();

パラメーター

xOffset
CPointx メンバーをオフセットする量を指定します。

yOffset
CPointy メンバーをオフセットする量を指定します。

point
CPoint をオフセットする量 (POINT または CPoint) を指定します。

size
CPoint をオフセットする量 (SIZE または CSize) を指定します。

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 ==

2 つの POINT が等しいかどうかを確認します。

BOOL operator==(POINT point) const throw();

パラメーター

point
POINT 構造体または CPoint オブジェクトが含まれています。

戻り値

POINT が等しい場合は 0 以外、それ以外の場合は 0。

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 !=

2 つの POINT が等しくないかどうかを確認します。

BOOL operator!=(POINT point) const throw();

パラメーター

point
POINT 構造体または CPoint オブジェクトが含まれています。

戻り値

POINT が等しくない場合は 0 以外、それ以外の場合は 0。

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 +=

最初のオーバーロードでは、CPointSIZE を追加します。

void operator+=(SIZE size) throw();
void operator+=(POINT point) throw();

パラメーター

size
SIZE 構造体または CSize オブジェクトが含まれています。

point
POINT 構造体または CPoint オブジェクトが含まれています。

解説

2 番目のオーバーロードでは、CPointPOINT を追加します。

どちらの場合も、右側のオペランドの x(または cx) メンバーを CPointx メンバーに加え、右側のオペランドの y (または cy) メンバーを CPointy メンバーに加えることで、加算が行われます。

たとえば、CPoint(30, 40) を含む変数に CPoint(5, -7) を加算すると、変数が CPoint(35, 33) に変わります。

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 -=

最初のオーバーロードでは、CPoint から SIZE を減算します。

void operator-=(SIZE size) throw();
void operator-=(POINT point) throw();

パラメーター

size
SIZE 構造体または CSize オブジェクトが含まれています。

point
POINT 構造体または CPoint オブジェクトが含まれています。

解説

2 番目のオーバーロードでは、CPoint から POINT を減算します。

どちらの場合も、右側のオペランドの x(または cx) メンバーを CPointx メンバーから引き、右側のオペランドの y (または cy) メンバーを CPointy メンバーから引くことで、減算が行われます。

たとえば、CPoint(30, 40) を含む変数から CPoint(5, -7) を減算すると、変数が CPoint(25, 47) に変わります。

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 +

CPoint または CSize オブジェクトによって CPoint をオフセットするか、あるいは CPoint によって CRect をオフセットするには、この演算子を使用します。

CPoint operator+(SIZE size) const throw();
CPoint operator+(POINT point) const throw();
CRect operator+(const RECT* lpRect) const throw();

パラメーター

size
SIZE 構造体または CSize オブジェクトが含まれています。

point
POINT 構造体または CPoint オブジェクトが含まれています。

lpRect
構造体またはCRectオブジェクトへのポインターをRECT格納します。

戻り値

SIZE によってオフセットされる CPointPOINT によってオフセットされる CPoint、または POINT によってオフセットされる CRect

解説

たとえば、最初の 2 つのオーバーロードのいずれかを使用してポイント CPoint(15, 5) またはサイズ CSize(15, 5) によってポイント CPoint(25, -19) をオフセットすると、値 CPoint(40, -14) が返されます。

POINTCRect を加算すると、その POINT で指定された x 値および y 値によってオフセットされた後に CRect が返されます。 たとえば、最後のオーバーロードを使用して四角形 CRect(125, 219, 325, 419) をポイント CPoint(25, -19) によってオフセットすると、CRect(150, 200, 350, 400) が返されます。

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 -

最初の 2 つのオーバーロードのいずれかを使用して、CPoint または CSize オブジェクトを CPoint から減算します。

CSize operator-(POINT point) const throw();
CPoint operator-(SIZE size) const throw();
CRect operator-(const RECT* lpRect) const throw();
CPoint operator-() const throw();

パラメーター

point
POINT 構造体または CPoint オブジェクト。

size
SIZE 構造体または CSize オブジェクト。

lpRect
RECT 構造体または CRect オブジェクトへのポインター。

戻り値

2 つの POINT の差である CSizeSIZE の否定によってオフセットされる CPointPOINT の否定によってオフセットされる CRect、または POINT の否定である CPoint

解説

3 番目のオーバーロードでは、CPoint の否定によって CRect をオフセットします。 最後に、単項演算子を使用して CPoint を否定します。

たとえば、最初のオーバーロードを使用して 2 つのポイント CPoint(25, -19)CPoint(15, 5) の差を見つけると、CSize(10, -24) が返されます。

CPoint から CSize を減算すると、上記と同じ計算が行われますが、CSize オブジェクトではなく CPoint オブジェクトが返されます。 たとえば、2 番目のオーバーロードを使用してポイント CPoint(25, -19) とサイズ CSize(15, 5) の差を見つけると、CPoint(10, -24) が返されます。

POINT から四角形を減算すると、その POINT で指定された x 値および y 値の否定によってオフセットされた四角形が返されます。 たとえば、最後のオーバーロードを使用して四角形 CRect(125, 200, 325, 400) をポイント CPoint(25, -19) によってオフセットすると、CRect(100, 219, 300, 419) が返されます。

単項演算子を使用して POINT を否定します。 たとえば、ポイント CPoint(25, -19) で単項演算子を使用すると、CPoint(-25, 19) が返されます。

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

関連項目

MFC サンプル MDI
階層図
POINT 構造体
CRect クラス
CSize クラス