CRect::SubtractRect
更新 : 2007 年 11 月
lpRectSrc1 で指定された四角形から lpRectSrc2 で指定された四角形を減算した四角形に等しい寸法の CRect オブジェクトを作ります。
BOOL SubtractRect(
LPCRECT lpRectSrc1,
LPCRECT lpRectSrc2
) throw( );
パラメータ
lpRectSrc1
減算される元の四角形を持つ RECT 構造体または CRect オブジェクトへのポインタ。lpRectSrc2
lpRectSrc1 パラメータで指定された四角形から減算する四角形を持つ RECT 構造体または CRect オブジェクトへのポインタ。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
lpRectScr1 と lpRectScr2 で指定した四角形が交わる部分を除いて、lpRectScr1 のすべての座標を含む最も小さい四角形を求めます。
lpRectSrc1 で指定した四角形が少なくとも x、y 方向のうちの 1 つで lpRectSrc2 で指定した四角形と完全に重ならない場合、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 関数は、CRect::operator - やCRect::operator -= とは異なります。これらの演算子は 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