CPoint::operator -
最初の 2 つのオーバーロード演算子のうちの 1 つを使って、CPoint オブジェクトから CPoint オブジェクトまたは CSize オブジェクトを減算します。
CSize operator -(
POINT point
) const throw( );
CPoint operator -(
SIZE size
) const throw( );
CRect operator -(
const RECT* lpRect
) const throw( );
CPoint operator -( ) const throw( );
パラメーター
戻り値
2 つのポイントの差を示す CSize、負の値が加算された CPoint、負の値が加算された CRect、または符号反転したポイントを示す 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) を返します。
ポイントから四角形を減算すると、ポイントで指定された x と y の符号を反転して四角形に加算します。 たとえば、3 番目のオーバーロード演算子を使って四角形 CRect(125, 200, 325, 400) からポイント CPoint(25, -19) を減算すると、CRect(100, 219, 300, 419) を返します。
ポイントの符号を反転するには単項演算子を使います。 たとえば、単項演算子を使うと、ポイント 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);
必要条件
**ヘッダー:**atltypes.h