次の方法で共有


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 を呼び出していません。

09k82h2b.alert_note(ja-jp,VS.90).gifメモ :

両方の四角形が正規化されていない場合、この関数は失敗することがあります。この関数を呼び出す前に 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

その他の技術情報

CRect のメンバ