Windows の POINT 構造体と同様のものです。
構文
class CPoint : public tagPOINT
メンバー
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
CPoint::CPoint |
CPoint を構築します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
CPoint::Offset |
CPoint の x および y メンバーに値を追加します。 |
パブリック演算子
| 名前 | 説明 |
|---|---|
CPoint::operator - |
CPoint と SIZE の差、POINT の否定、2 つの POINT 間の CSize の差、または負の SIZE によるオフセットを返します。 |
CPoint::operator != |
2 つの POINT が等しくないかどうかを確認します。 |
CPoint::operator + |
CPoint と SIZE または 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 構造体にはあまり使われる名前ではありません)。つまり、 POINT 構造体のデータ メンバー ( x と 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
x の CPoint メンバーの値を指定します。
initY
y の CPoint メンバーの値を指定します。
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
CPoint の x および y メンバーに値を追加します。
void Offset(int xOffset, int yOffset) throw();
void Offset(POINT point) throw();
void Offset(SIZE size) throw();
パラメーター
xOffset
CPoint の x メンバーをオフセットする量を指定します。
yOffset
CPoint の y メンバーをオフセットする量を指定します。
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 +=
最初のオーバーロードでは、CPoint に SIZE を追加します。
void operator+=(SIZE size) throw();
void operator+=(POINT point) throw();
パラメーター
size
SIZE 構造体または CSize オブジェクトが含まれています。
point
POINT 構造体または CPoint オブジェクトが含まれています。
解説
2 番目のオーバーロードでは、CPoint に POINT を追加します。
どちらの場合も、右側のオペランドの x(または cx) メンバーを CPoint の x メンバーに加え、右側のオペランドの y (または cy) メンバーを CPoint の y メンバーに加えることで、加算が行われます。
たとえば、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) メンバーを CPoint の x メンバーから引き、右側のオペランドの y (または cy) メンバーを CPoint の y メンバーから引くことで、減算が行われます。
たとえば、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
RECT構造体またはCRect オブジェクトへのポインターを格納します。
戻り値
SIZE によってオフセットされる CPoint、POINT によってオフセットされる CPoint、または POINT によってオフセットされる CRect。
解説
たとえば、最初の 2 つのオーバーロードのいずれかを使用してポイント CPoint(15, 5) またはサイズ CSize(15, 5) によってポイント CPoint(25, -19) をオフセットすると、値 CPoint(40, -14) が返されます。
POINT に CRect を加算すると、その 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 の差である CSize、SIZE の否定によってオフセットされる CPoint、POINT の否定によってオフセットされる 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);