CPoint
クラス
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);