次の方法で共有


CRect::SubtractRect

lpRectSrc1から減算 lpRectSrc2 のと同じ CRect の寸法を作成します。

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

パラメーター

  • lpRectSrc1
    四角形が引かれた CRect のオブジェクトまたは RECT をポイントし、構成します。

  • lpRectSrc2
    lpRectSrc1 のパラメーターが指す四角形から引く CRect のオブジェクトまたは RECT をポイントし、構成します。

戻り値

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

解説

減算 lpRectScr1 では lpRectScr1 と lpRectScr2の間に存在しないポイントをすべて備えた最小の四角形です。

lpRectSrc1 で指定された四角形は lpRectSrc2 で指定された四角形が完全に x と y 方向に 1 文字以上で lpRectSrc1 で指定された四角形に重複する値は変更できません。

たとえば、lpRectSrc1 が (10,10、100,100) であり、関数が戻るときに lpRectSrc2 (50,50、150,150) と、lpRectSrc1 によって示される四角形は変更されません。lpRectSrc1 が (10,10、100,100) であり、lpRectSrc2 (50,10、150,150) と、関数から制御が戻るときに、lpRectSrc1 によって示される四角形は座標 (10,10、50,100) が含まれます。

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

必要条件

ヘッダー: atltypes.h

参照

関連項目

CRect クラス

階層図

CRect::operator -

CRect::operator -=

CRect::IntersectRect

CRect::UnionRect

CRect::NormalizeRect

SubtractRect