CRect クラス

型の構造体Windows RECT 似ています。

構文

class CRect : public tagRECT

メンバー

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

名前 説明
CRect::CRect CRect オブジェクトを構築します。

パブリック メソッド

名前 説明
CRect::BottomRight の右下のポイントを返します CRect
CRect::CenterPoint の中心点を返します CRect
CRect::CopyRect ソース四角形の次元を にコピーします CRect
CRect::DeflateRect の幅と高さを減らします CRect
CRect::EqualRect が指定された四 CRect 角形と等しいかどうかを判断します。
CRect::Height の高さを計算します CRect
CRect::InflateRect の幅と高さを増やします CRect
CRect::IntersectRect 2 CRect つの四角形の交差部分と等しいを設定します。
CRect::IsRectEmpty が空かどうかを CRect 判断します。 CRect 幅または高さが 0 の場合、 は空です。
CRect::IsRectNull 、、、および メンバー変数が、すべて top bottom 0 と等しい left right かどうかを判断します。
CRect::MoveToX 指定 CRect した x 座標に移動します。
CRect::MoveToXY 指定 CRect した x 座標と y 座標に移動します。
CRect::MoveToY 指定 CRect した y 座標に移動します。
CRect::NormalizeRect の高さと幅を標準化します CRect
CRect::OffsetRect 指定 CRect したオフセットで移動します。
CRect::PtInRect 指定したポイントが 内にあるかどうかを判断します CRect
CRect::SetRect のディメンションを設定します CRect
CRect::SetRectEmpty CRect の四角形 (すべての座標が 0 に等しい) に設定されます。
CRect::Size のサイズを計算します CRect
CRect::SubtractRect 1 つの四角形を別の四角形から減算します。
CRect::TopLeft の左上のポイントを返します CRect
CRect::UnionRect 2 CRect つの四角形の共用体と等しいを設定します。
CRect::Width の幅を計算します CRect

パブリック演算子

Name 説明
CRect::operator - 指定したオフセットを から減算するか、 CRect または deflates を実行し CRect 、結果の を返します CRect
CRect::operator LPCRECT CRectLPCRECT に変換します。
CRect::operator LPRECT CRectLPRECT に変換します。
CRect::operator != が四角形 CRect と等しくないかどうかを判断します。
CRect::operator & と 四角形の交差 CRect 部分を作成し、結果の を返します CRect
CRect::operator &= CRect 四角形の交差部分に CRect 等しい を設定します。
CRect::operator | と 四角形の共用 CRect 体を作成し、結果の を返します CRect
CRect::operator |= CRect 四角形の共用体に CRect 等しいを設定します。
CRect::operator + 指定したオフセットを または に追加 CRect または増やし CRect 、結果の を返します CRect
CRect::operator += 指定したオフセットを に追加するか CRect 、 を増やします CRect
CRect::operator = 四角形の次元を にコピーします CRect
CRect::operator -= 指定したオフセットを から減算するか、 CRect をデフレートします CRect
CRect::operator == が四角形 CRect と等しいかどうかを判断します。

Remarks

CRectには、オブジェクトを操作し、構造体 CRect を操作するためのWindows RECT も含まれています。

オブジェクトは、構造体、、または を渡す場所に、関数パラメーター CRect RECT LPCRECT LPRECT として渡されます。

注意

このクラスは、 構造体から派生 tagRECT します。 (この tagRECT 名前は、構造体のあまり一般的に使用される名前 RECT です)。つまり、 構造体のデータ メンバー ( left 、 、 、 ) は、 のデータ top right bottom RECT メンバーにアクセスできます CRect

には CRect 、四角形の左上と右下の点を定義するメンバー変数が含まれている。

を指定する場合は、正規化される (つまり、左座標の値が右より小さく、上が下の方が下の方)、構築に注意する必要があります。 CRect たとえば、(10,10) の左上と右下の (20,20) では正規化された四角形が定義されますが、左上の (20,20) と右下の (10,10) は正規化されていない四角形を定義します。 四角形が正規化されていない場合、多くのメンバー関数が CRect 正しくない結果を返す可能性があります。 (これらの CRect::NormalizeRect 関数の一覧については、「」を参照してください)。正規化された四角形を必要とする関数を呼び出す前に、 関数を呼び出すことによって、正規化されていない四角形を正規化 NormalizeRect できます。

メンバー関数と メンバー関数を使用して CRect を操作する場合 CDC::DPtoLPCDC::LPtoDP 注意が必要です。 表示コンテキストのマッピング モードが の場合と同様に、y エクステントが負の値である場合は、その上が下の方を大きく変換 MM_LOENGLISH CDC::DPtoLP CRect します。 や などの関数は、変換された の高さに負の値を返し、四角形は Height Size CRect 正規化されません。

オーバーロードされた演算子を CRect 使用する場合、最初のオペランドは である必要があります。2 番目のオペランドは 構造体または CRect RECT オブジェクト CRect のいずれかになります。

継承階層

tagRECT

CRect

必要条件

ヘッダー:atltypes.h

CRect::BottomRight

座標は、 に含まれる オブジェクトへの CPoint 参照として返されます CRect

CPoint& BottomRight() throw();
const CPoint& BottomRight() const throw();

戻り値

四角形の右下隅の座標。

Remarks

この関数を使用して、四角形の右下隅を取得または設定できます。 代入演算子の左側にあるこの関数を使用して、角を設定します。

// use BottomRight() to retrieve the bottom
// right POINT
CRect rect(210, 150, 350, 900);
CPoint ptDown;

ptDown = rect.BottomRight();

// ptDown is now set to (350, 900)
ASSERT(ptDown == CPoint(350, 900));

// or, use BottomRight() to set the bottom
// right POINT
CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);

CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);
rect2.BottomRight() = ptLow;

// rect2 is now (10, 10, 180, 180)
ASSERT(rect2 == CRect(10, 10, 180, 180));

CRect::CenterPoint

左と右の値を追加し、2 で除算し、上と下の値を追加して 2 で除算することで、 の中心 CRect 点を計算します。

CPoint CenterPoint() const throw();

戻り値

CPoint 中心点である オブジェクト CRect

// Code from this OnPaint() implementation can be pasted into your own application
// to draw lines that would look like a letter "Y" within your dialog.
void CMyDlg::OnPaint()
{
    CPaintDC dc(this);

    // device context for painting

    // get the size and position of the client area of
    // your window

    CRect rect;
    GetClientRect(&rect);

    // Move the current pen to the top left of the window. We call the
    // TopLeft() member of CRect here and it returns a CPoint object we
    // pass to the override of CDC::MoveTo() that accepts a CPoint.

    dc.MoveTo(rect.TopLeft());

    // Draw a line from the top left to the center of the window.
    // CenterPoint() gives us the middle point of the window as a
    // CPoint, and since CDC::LineTo() has an override that accepts a
    // CPoint, we can just pass it along.

    dc.LineTo(rect.CenterPoint());

    // Now, draw a line to the top right of the window. There's no
    // CRect member which returns a CPoint for the top right of the
    // window, so we'll reference the CPoint members directly and call
    // the CDC::LineTo() override which takes two integers.

    dc.LineTo(rect.right, rect.top);

    // The top part of the "Y" is drawn. Now, we'll draw the stem. We
    // start from the center point.

    dc.MoveTo(rect.CenterPoint());

    // and then draw to the middle of the bottom edge of the window.
    // We'll get the x-coordinate from the x member of the CPOINT
    // returned by CenterPoint(), and the y value comes directly from
    // the rect.

    dc.LineTo(rect.CenterPoint().x, rect.bottom);
}

CRect::CopyRect

四角形を lpSrcRect にコピーします CRect

void CopyRect(LPCRECT lpSrcRect) throw();

パラメーター

lpSrcRect
コピーする RECT 構造体 CRect またはオブジェクトをポイントします。

CRect rectSource(35, 10, 125, 10);
CRect rectDest;

rectDest.CopyRect(&rectSource);

// rectDest is now set to (35, 10, 125, 10)

RECT rectSource2;
rectSource2.left = 0;
rectSource2.top = 0;
rectSource2.bottom = 480;
rectSource2.right = 640;

rectDest.CopyRect(&rectSource2);

// works against RECT structures, too!
// rectDest is now set to (0, 0, 640, 480)

CRect::CRect

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

CRect() throw();
CRect(int l, int t, int r, int b) throw();
CRect(const RECT& srcRect) throw();
CRect(LPCRECT lpSrcRect) throw();
CRect(POINT point, SIZE size) throw();
CRect(POINT topLeft, POINT bottomRight) throw();

パラメーター

l
の左の位置を指定します CRect

t
の上部を指定します CRect

r
の右位置を指定します CRect

b
の下部を指定します CRect

srcRect
の座標 RECT を持つ 構造体を参照します CRect

lpSrcRect
の座標 RECT を持つ 構造体をポイントします CRect

point
構築する四角形の原点を指定します。 左上隅に対応します。

size
構築する四角形の左上隅から右下隅への移動を指定します。

topLeft
の左上の位置を指定します CRect

bottomRight
の右下の位置を指定します CRect

Remarks

引数が指定されない場合 left top 、、、、および メンバー right bottom は 0 に設定されます。

( CRect const RECT& ) コンストラクターと CRect ( ) LPCRECT コンストラクターは を実行します CopyRect 。 他のコンストラクターは、 オブジェクトのメンバー変数を直接初期化します。

// default constructor is equivalent to CRect(0, 0, 0, 0)
CRect emptyRect;

// four-integers are left, top, right, and bottom
CRect rect(0, 0, 100, 50);
ASSERT(rect.Width() == 100);
ASSERT(rect.Height() == 50);

// Initialize from RECT structure
RECT sdkRect;
sdkRect.left = 0;
sdkRect.top = 0;
sdkRect.right = 100;
sdkRect.bottom = 50;

CRect rect2(sdkRect);
// by reference
CRect rect3(&sdkRect);

// by address
ASSERT(rect2 == rect);
ASSERT(rect3 == rect);

// from a point and a size
CPoint pt(0, 0);
CSize sz(100, 50);
CRect rect4(pt, sz);
ASSERT(rect4 == rect2);

// from two points
CPoint ptBottomRight(100, 50);
CRect rect5(pt, ptBottomRight);
ASSERT(rect5 == rect4);

CRect::DeflateRect

DeflateRect は、その CRect 側を中央に向かって移動することで、その中心に向かって移動します。

void DeflateRect(int x, int y) throw();
void DeflateRect(SIZE size) throw();
void DeflateRect(LPCRECT lpRect) throw();
void DeflateRect(int l, int t, int r, int b) throw();

パラメーター

x
の左辺と右辺を偏向する単位の数を指定します CRect

y
の上と下をデフレートする単位の数を指定します CRect

size
SIZECSize フレートする単位の数を指定する または CRect 。 値は、左右の辺を偏向する単位の数を指定し、 値は上辺と下辺を下向きする単位数 cx cy を指定します。

lpRect
構造体をポイントするか、または各側をデフレートする単位 RECT CRect の数を指定します。

l
の左側をデフレートする単位の数を指定します CRect

t
の上に向かう単位の数を指定します CRect

r
の右側をデフレートする単位の数を指定します CRect

b
の下部をデフレートする単位の数を指定します CRect

Remarks

これを行うには、左と上に単位を加算し、右と下から DeflateRect 単位を減算します。 のパラメーターは DeflateRect 符号付き値で、正の値は deflate 値と CRect 負の値を使用します。

最初の 2 つのオーバーロードでは、 の両側の両方のペアがデフレートされ、その合計幅が 2 倍 (または ) 減少し、その合計高さが 2 回 (または ) 減少 CRect x cx y します cy 。 他の 2 つのオーバーロードでは、各側が他のオーバーロードとは CRect 独立してデフレートされます。

CRect rect(10, 10, 50, 50);
rect.DeflateRect(1, 2);
ASSERT(rect.left == 11 && rect.right == 49);
ASSERT(rect.top == 12 && rect.bottom == 48);

CRect rect2(10, 10, 50, 50);
CRect rectDeflate(1, 2, 3, 4);
rect2.DeflateRect(&rectDeflate);
ASSERT(rect2.left == 11 && rect2.right == 47);
ASSERT(rect2.top == 12 && rect2.bottom == 46);

CRect::EqualRect

が指定された四 CRect 角形と等しいかどうかを判断します。

BOOL EqualRect(LPCRECT lpRect) const throw();

パラメーター

lpRect
四角形の左上隅と右下隅の座標を含む構造体またはオブジェクト RECT CRect をポイントします。

戻り値

2 つの四角形の上、左、下、右の値が同じ場合は 0 以外。それ以外の場合は 0。

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1.EqualRect(rect2));
ASSERT(!rect1.EqualRect(rect3));
// works just fine against RECTs, as well

RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;

ASSERT(rect1.EqualRect(&test));

CRect::Height

一番下の値から CRect 上の値を減算して、 の高さを計算します。

int Height() const throw();

戻り値

の高さ CRect

Remarks

結果の値は負の値になる可能性があります。

注意

四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rect(20, 30, 80, 70);
int nHt = rect.Height();

// nHt is now 40
ASSERT(nHt == 40);

CRect::InflateRect

InflateRect は、その CRect 側を中心から離して大きくします。

void InflateRect(int x, int y) throw();
void InflateRect(SIZE size) throw();
void InflateRect(LPCRECT lpRect) throw();
void InflateRect(int l, int t, int r,  int b) throw();

パラメーター

x
の左辺と右辺を増やす単位の数を指定します CRect

y
の上と下に読み込む単位の数を指定します CRect

size
SIZECSize やす単位の数を指定する または CRect 。 値は、左右の辺を増やす単位の数を指定し、 値は、上と下を高くする単位 cx cy の数を指定します。

lpRect
構造体をポイント RECT するか、または各側を増やす単位 CRect の数を指定します。

l
の左側を増やす単位の数を指定します CRect

t
の上に表示する単位の数を指定します CRect

r
の右側を読み込む単位の数を指定します CRect

b
の下部を増やす単位の数を指定します CRect

Remarks

これを行うには、 InflateRect 左と上から単位を減算し、単位を右と下に追加します。 のパラメーターは InflateRect 符号付き値です。正の値を指定すると、正の値がフレートされ CRect 、負の値によってデフされます。

最初の 2 つのオーバーロードでは、 の両側の両方のペアが広がり、合計幅が 2 倍 (または ) 増加し、その全高が 2 倍 (または ) 増加 CRect x cx y します cy 。 他の 2 つのオーバーロードは、他のオーバーロードとは独立して、それぞれの CRect 側を大きくします。

CRect rect(0, 0, 300, 300);
rect.InflateRect(50, 200);

// rect is now (-50, -200, 350, 500)
ASSERT(rect == CRect(-50, -200, 350, 500));

CRect::IntersectRect

2 CRect つの既存の四角形の交差部分と等しくなります。

BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();

パラメーター

lpRect1
ソース四角形 RECT を含 CRect む構造体またはオブジェクトをポイントします。

lpRect2
ソース四角形 RECT を含 CRect む構造体またはオブジェクトをポイントします。

戻り値

交差部分が空でない場合は 0 以外。交差部分が空の場合は 0。

Remarks

交差部分は、既存の両方の四角形に含まれる最大の四角形です。

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rectOne(125,  0, 150, 200);
CRect rectTwo(0, 75, 350, 95);
CRect rectInter;

rectInter.IntersectRect(rectOne, rectTwo);
ASSERT(rectInter == CRect(125, 75, 150, 95));
// operator &= can do the same task:

CRect rectInter2 = rectOne;
rectInter2 &= rectTwo;
ASSERT(rectInter2 == CRect(125, 75, 150, 95));

CRect::IsRectEmpty

が空かどうかを CRect 判断します。

BOOL IsRectEmpty() const throw();

戻り値

が空の CRect 場合は 0 以外、空でない CRect 場合は 0。

Remarks

幅や高さが 0 または負の場合、四角形は空です。 とは異なります IsRectNull 。これは、四角形のすべての座標が 0 かどうかを決定します。

注意

四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectEmpty());
ASSERT(!rectSome.IsRectEmpty());
CRect rectEmpty(35, 35, 35, 35);
ASSERT(rectEmpty.IsRectEmpty());

CRect::IsRectNull

の上、左、下、および右の値が、すべて CRect 0 と等しいかどうかを判断します。

BOOL IsRectNull() const throw();

戻り値

の top、left、bottom、right の値が 0 と等しい場合は 0 以外。それ以外 CRect の場合は 0。

Remarks

とは異なります IsRectEmpty 。これは、四角形が空かどうかを決定します。

CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectNull());
ASSERT(!rectSome.IsRectNull());
// note that null means _all_ zeros

CRect rectNotNull(0, 0, 35, 50);
ASSERT(!rectNotNull.IsRectNull());

CRect::MoveToX

で指定された絶対 x 座標に四角形を移動するには、この関数を呼び出します x

void MoveToX(int x) throw();

パラメーター

x
四角形の左上隅の絶対 x 座標。

CRect rect(0, 0, 100, 100);
rect.MoveToX(10);

// rect is now (10, 0, 110, 100);
ASSERT(rect == CRect(10, 0, 110, 100));

CRect::MoveToXY

四角形を指定した絶対 x 座標と y 座標に移動するには、この関数を呼び出します。

void MoveToXY(int x, int y) throw();
void MoveToXY(POINT point) throw();

パラメーター

x
四角形の左上隅の絶対 x 座標。

y
四角形の左上隅の絶対 y 座標。

point
POINT 角形の左上隅の絶対位置を指定する 構造体。

CRect rect(0, 0, 100, 100);
rect.MoveToXY(10, 10);
// rect is now (10, 10, 110, 110);
ASSERT(rect == CRect(10, 10, 110, 110));

CRect::MoveToY

で指定された絶対 y 座標に四角形を移動するには、この関数を呼び出します y

void MoveToY(int y) throw();

パラメーター

y
四角形の左上隅の絶対 y 座標。

CRect rect(0, 0, 100, 100);
rect.MoveToY(10);
// rect is now (0, 10, 100, 110);
ASSERT(rect == CRect(0, 10, 100, 110));

CRect::NormalizeRect

高さと CRect 幅の両方が正の値に正規化されます。

void NormalizeRect() throw();

Remarks

四角形は、4 番目のクアドラント配置に対して正規化されます。通常Windows座標に使用されます。 NormalizeRect は、上と下の値を比較し、上部が下の値より大きい場合はスワップします。 同様に、左側が右より大きい場合は、左と右の値が入れ替わるのです。 この関数は、さまざまなマッピング モードと反転四角形を処理する場合に便利です。

注意

次のメンバー関数は、および を正常に動作するために正規化された四角形 CRect Height Width Size IsRectEmpty PtInRect EqualRect UnionRect IntersectRect SubtractRect operator == operator != operator | operator |=operator & 必要とします operator &=

CRect rect1(110, 100, 250, 310);
CRect rect2(250, 310, 110, 100);
rect1.NormalizeRect();
rect2.NormalizeRect();
ASSERT(rect1 == rect2);

CRect::OffsetRect

指定 CRect したオフセットで移動します。

void OffsetRect(int x, int y) throw();
void OffsetRect(POINT point) throw();
void OffsetRect(SIZE size) throw();

パラメーター

x
左右に移動する量を指定します。 左に移動するには負の値を指定する必要があります。

y
上下に移動する量を指定します。 上に移動するには負の値を指定する必要があります。

point
移動に使用 POINT する両方の CPoint ディメンションを指定する構造体またはオブジェクトを格納します。

size
移動に使用 SIZE する両方の CSize ディメンションを指定する構造体またはオブジェクトを格納します。

Remarks

x CRect x 軸に沿って単位を移動し y 、y 軸に沿って単位を移動します。 パラメーター xy パラメーターは符号付き値なので CRect 、左右または上下に移動できます。

CRect rect(0, 0, 35, 35);
rect.OffsetRect(230, 230);

// rect is now (230, 230, 265, 265)
ASSERT(rect == CRect(230, 230, 265, 265));

CRect::operator LPCRECTを に CRect 変換します LPCRECT

operator LPCRECT() const throw();

Remarks

この関数を使用する場合、address-of ( ) 演算子は & 必要はありません。 この演算子は、 を受け取る関数に オブジェクトを CRect 渡す場合に自動的に使用されます LPCRECT

CRect::operator LPRECT

を に CRect 変換します LPRECT

operator LPRECT() throw();

Remarks

この関数を使用する場合、address-of ( ) 演算子は & 必要はありません。 この演算子は、 を受け取る関数に オブジェクトを CRect 渡す場合に自動的に使用されます LPRECT

の例を参照してください CRect::operator LPCRECT

CRect::operator =

を に割り srcRect 当てる CRect

void operator=(const RECT& srcRect) throw();

パラメーター

srcRect
ソース四角形を参照します。 または を指定 RECT できます CRect

CRect rect(0, 0, 127, 168);
CRect rect2;

rect2 = rect;
ASSERT(rect2 == CRect(0, 0, 127, 168));

CRect::operator ==

左上隅と右下隅の座標を比較して、 が と等しい rect CRect かどうかを判断します。

BOOL operator==(const RECT& rect) const throw();

パラメーター

rect
ソース四角形を参照します。 または を指定 RECT できます CRect

戻り値

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

Remarks

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1 == rect2);
// works just fine against RECTs, as well

RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;

ASSERT(rect1 == test);

CRect::operator !=

左上隅と右下隅の座標を比較して、 が と等しくない rect CRect かどうかを判断します。

BOOL operator!=(const RECT& rect) const throw();

パラメーター

rect
ソース四角形を参照します。 または を指定 RECT できます CRect

戻り値

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

Remarks

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999,  6,  3);
ASSERT(rect1 != rect3);
// works just fine against RECTs, as well

RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;

ASSERT(rect3 != test);

CRect::operator +=

最初の 2 つのオーバーロードは、 CRect 指定したオフセットで移動します。

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

パラメーター

point
POINT 角形 CPoint を移動する単位の数を指定する 構造体またはオブジェクト。

size
SIZE 角形 CSize を移動する単位の数を指定する 構造体またはオブジェクト。

lpRect
の各側を増やす単位の数を含む 構造体または RECT CRect オブジェクトをポイントします CRect

Remarks

パラメーターの と x y (または および ) cx cy の値が に追加されます CRect

3 番目のオーバーロードは、 パラメーター CRect の各メンバーで指定された単位数で増やされます。

CRect   rect1(100, 235, 200, 335);
CPoint  pt(35, 65);
CRect   rect2(135, 300, 235, 400);

rect1 += pt;
ASSERT(rect1 == rect2);

CRect::operator -=

最初の 2 つのオーバーロードは、 CRect 指定したオフセットで移動します。

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

パラメーター

point
POINT 角形 CPoint を移動する単位の数を指定する 構造体またはオブジェクト。

size
SIZE 角形 CSize を移動する単位の数を指定する 構造体またはオブジェクト。

lpRect
の各 RECT 側をデ CRect フレートする単位の数を含む 構造体またはオブジェクトをポイントします CRect

Remarks

パラメーターの と x y (または および ) cx cy の値は から減算されます CRect

3 番目のオーバーロードは、 パラメーターの各メンバー CRect で指定された単位の数でデフレートします。 このオーバーロード関数は、 のように機能します DeflateRect

CRect   rect1(100, 235, 200, 335);
CPoint pt(35, 65);

rect1 -= pt;
CRect   rectResult(65, 170, 165, 270);
ASSERT(rect1 == rectResult);

CRect::operator &=

CRect の交差部分に等しい を設定 CRect します rect

void operator&=(const RECT& rect) throw();

パラメーター

rect
または が含 RECT まれている CRect

Remarks

交差部分は、両方の四角形に含まれる最大の四角形です。

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

の例を参照してください CRect::IntersectRect

CRect::operator |=

CRect の共用体と等しい を CRect 設定します rect

void operator|=(const RECT& rect) throw();

パラメーター

rect
または が含 CRect まれている RECT

Remarks

共用体は、両方のソース四角形を含む最小の四角形です。

注意

両方の四角形を正規化する必要があります。または、この関数が失敗する可能性があります。 を呼び出 NormalizeRect して、この関数を呼び出す前に四角形を正規化できます。

CRect   rect1(100,  0, 200, 300);
CRect   rect2(0, 100, 300, 200);

rect1 |= rect2;
CRect   rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect1);

CRect::operator +

最初の 2 つのオーバーロードは、 CRect 指定されたオフセットによって置換された オブジェクト CRect と等しい オブジェクトを返します。

CRect operator+(POINT point) const throw();
CRect operator+(LPCRECT lpRect) const throw();
CRect operator+(SIZE size) const throw();

パラメーター

point
POINT り値 CPoint を移動する単位の数を指定する 構造体またはオブジェクト。

size
SIZE り値 CSize を移動する単位の数を指定する 構造体またはオブジェクト。

lpRect
戻り値の各側を増やす単位の数を含む構造体またはオブジェクト RECT CRect をポイントします。

戻り値

パラメーター CRect で指定された単位数で移動または増や CRect した結果の 。

Remarks

パラメーターの および x y (または cx cy および ) パラメーターが の位置 CRect に追加されます。

3 番目のオーバーロードは、 パラメーターの各メンバーに指定された単位数で増やされたと等しい新 CRect CRect しい を返します。

CRect   rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect   rect2;

rect2 = rect1 + pt;
CRect   rectResult(135, 300, 235, 400);
ASSERT(rectResult == rect2);

CRect::operator -

最初の 2 つのオーバーロードは、 CRect 指定されたオフセットによって置換された オブジェクト CRect と等しい オブジェクトを返します。

CRect operator-(POINT point) const throw();
CRect operator-(SIZE size) const throw();
CRect operator-(LPCRECT lpRect) const throw();

パラメーター

point
POINT り値 CPoint を移動する単位の数を指定する 構造体またはオブジェクト。

size
SIZE り値 CSize を移動する単位の数を指定する 構造体またはオブジェクト。

lpRect
戻り値の各側をデフレートする単位の数を含む構造体またはオブジェクト RECT CRect をポイントします。

戻り値

CRect CRect パラメーターで指定した単位数だけ移動または deflating した結果の。

Remarks

パラメーターの x および y (または cx ) パラメーターは、 cy の位置から減算され CRect ます。

3番目のオーバーロードは、 CRect CRect パラメーターの各メンバーで指定された単位数によって deflated に等しい新しいを返します。 このオーバーロードは、ではなくのように機能することに注意 DeflateRect SubtractRect してください。

CRect   rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect   rect2;

rect2 = rect1 - pt;
CRect   rectResult(65, 170, 165, 270);
ASSERT(rect2 == rectResult);

CRect::operator &

CRectと rect2 の積集合であるを返し CRect ます。

CRect operator&(const RECT& rect2) const throw();

パラメーター

rect2
にまたはが含まれてい RECT CRect ます。

戻り値

CRectとの積集合である CRect rect2

Remarks

交差部分は、両方の四角形に含まれる最大の四角形です。

注意

両方の四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect   rect1(100,  0, 200, 300);
CRect   rect2(0, 100, 300, 200);
CRect   rect3;

rect3 = rect1 & rect2;
CRect   rectResult(100, 100, 200, 200);
ASSERT(rectResult == rect3);

CRect::operator |

CRectとの和集合であるを CRect 返し rect2 ます。

CRect operator|(const RECT&
rect2) const throw();

パラメーター

rect2
にまたはが含まれてい RECT CRect ます。

戻り値

CRectとの和集合を表す CRect rect2

Remarks

共用体は、両方の四角形を含む最小の四角形です。

注意

両方の四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect   rect1(100,  0, 200, 300);
CRect   rect2(0, 100, 300, 200);
CRect   rect3;

rect3 = rect1 | rect2;
CRect   rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);

CRect::PtInRect

指定した点が内にあるかどうかを判断し CRect ます。

BOOL PtInRect(POINT point) const throw();

パラメーター

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

戻り値

ポイントが内にある場合は0以外 CRect 。それ以外の場合は0。

Remarks

位置が CRect 左側または上側にある場合、または4辺のいずれかにある場合、ポイントは内にあります。 右または下の点が外側に CRect あります。

注意

四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect rect(5, 5, 100, 100);
CPoint pt1(35, 50);
CPoint pt2(125, 298);

// this is true, because pt1 is inside the rectangle
ASSERT(rect.PtInRect(pt1));

// this is NOT true, because pt2 is outside the rectangle
ASSERT(!rect.PtInRect(pt2));

// note that the right and the bottom aren't inside
ASSERT(!rect.PtInRect(CPoint(35, 100)));
ASSERT(!rect.PtInRect(CPoint(100, 98)));

// but the top and the left are inside
ASSERT(rect.PtInRect(CPoint(5, 65)));
ASSERT(rect.PtInRect(CPoint(88, 5)));

// and that PtInRect() works against a POINT, too
POINT pt;
pt.x = 35;
pt.y = 50;
ASSERT(rect.PtInRect(pt));

CRect::SetRect

の次元 CRect を指定した座標に設定します。

void SetRect(int x1, int y1, int x2, int y2) throw();

パラメーター

x1
左上隅の x 座標を指定します。

y1
左上隅の y 座標を指定します。

x2
右下隅の x 座標を指定します。

y2
右下隅の y 座標を指定します。

CRect rect;
rect.SetRect(256, 256, 512, 512);
ASSERT(rect == CRect(256, 256, 512, 512));

CRect::SetRectEmpty

CRectすべての座標を0に設定して、null の四角形を作成します。

void SetRectEmpty() throw();

CRect rect;
rect.SetRectEmpty();

// rect is now (0, 0, 0, 0)
ASSERT(rect.IsRectEmpty());

CRect::SIZE

cx cy 戻り値のおよびメンバーには、の高さと幅が含まれ CRect ます。

CSize Size() const throw();

戻り値

CSizeのサイズを格納しているオブジェクト CRect

Remarks

高さまたは幅は負の値にすることができます。

注意

四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect rect(10, 10, 50, 50);
CSize sz = rect.Size();
ASSERT(sz.cx == 40 && sz.cy == 40);

CRect::SubtractRect

の次元を CRect からのの減算と同じに lpRectSrc2lpRectSrc1 ます。

BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2) throw();

パラメーター

lpRectSrc1
RECT四角形が減算される構造体またはオブジェクトを指し CRect ます。

lpRectSrc2
RECT CRect パラメーターによって示される四角形から減算される構造体またはオブジェクトを指し lpRectSrc1 ます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

Remarks

減算は、 lpRectScr1 との交差部分に含まれていないのすべての点を含む最小の四角形です lpRectScr1 lpRectScr2

で指定された四角形が、 lpRectSrc1 lpRectSrc2 lpRectSrc1 x 方向または y 方向の少なくとも1つので指定された四角形と完全に重なる場合、で指定された四角形は変更されません。

たとえば、 lpRectSrc1 が (10, 10, 100100) で、 lpRectSrc2 が (50, 50, 150150) であった場合、が指す四角形は、 lpRectSrc1 関数が返されたときに変更されません。 lpRectSrc1 が (10, 10, 100100) で、 lpRectSrc2 が (50, 10, 150150) であった場合、が指す四角形には、 lpRectSrc1 関数が返されたときの座標 (10, 10, 50100) が格納されます。

SubtractRect演算子 または 演算子-=と同じではありません。 これらの演算子はいずれもを呼び出しません SubtractRect

注意

両方の四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

RECT   rectOne;
RECT   rectTwo;

rectOne.left = 10;
rectOne.top = 10;
rectOne.bottom = 100;
rectOne.right = 100;

rectTwo.left = 50;
rectTwo.top = 10;
rectTwo.bottom = 150;
rectTwo.right = 150;

CRect   rectDiff;

rectDiff.SubtractRect(&rectOne, &rectTwo);
CRect   rectResult(10, 10, 50, 100);

ASSERT(rectDiff == rectResult);

// works for CRect, too, since there is
// implicit CRect -> LPCRECT conversion

CRect rect1(10, 10, 100, 100);
CRect rect2(50, 10, 150, 150);
CRect rectOut;

rectOut.SubtractRect(rect1, rect2);
ASSERT(rectResult == rectOut);

CRect::TopLeft

座標は、 CPoint に格納されているオブジェクトへの参照として返され CRect ます。

CPoint& TopLeft() throw();
const CPoint& TopLeft() const throw();

戻り値

四角形の左上隅の座標です。

Remarks

この関数を使用すると、四角形の左上隅を取得または設定できます。 代入演算子の左側にあるこの関数を使用して、コーナーを設定します。

の例を参照してください CRect::CenterPoint

CRect::UnionRect

CRect2 つのソース四角形の和集合に等しいの大きさを作成します。

BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();

パラメーター

lpRect1
RECT変換元の四角形を格納しているまたはを指し CRect ます。

lpRect2
RECT変換元の四角形を格納しているまたはを指し CRect ます。

戻り値

共用体が空でない場合は0以外の。共用体が空の場合は0。

Remarks

共用体は、両方のソース四角形を含む最小の四角形です。

Windows は、空の四角形の大きさを無視します。つまり、高さのない四角形や幅のない四角形です。

注意

両方の四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect   rect1(100,  0, 200, 300);
CRect   rect2(0, 100, 300, 200);
CRect   rect3;

rect3.UnionRect(&rect1, &rect2);
CRect   rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);

CRect::Width

CRect右側の値から左の値を減算することによっての幅を計算します。

int Width() const throw();

戻り値

の幅 CRect

Remarks

幅には負の値を指定できます。

注意

四角形が正規化されているか、この関数が失敗する可能性があります。 を呼び出して NormalizeRect 、この関数を呼び出す前に四角形を正規化することができます。

CRect rect(20, 30, 80, 70);
int nWid = rect.Width();
// nWid is now 60
ASSERT(nWid == 60);

関連項目

CPoint 講義
CSize 講義
RECT