CRect::SubtractRect
Boyutları, yaptığı CRect çıkarma eşit lpRectSrc2 karşı lpRectSrc1.
BOOL SubtractRect(
LPCRECT lpRectSrc1,
LPCRECT lpRectSrc2
) throw( );
Parametreler
lpRectSrc1
İşaret rect yapısı veya CRect içinden bir dikdörtgendir toplanabilir için nesne.lpRectSrc2
İşaret RECT yapısı veya CRect tarafından için dikdörtgen toplanabilir olan nesneyi işaret lpRectSrc1 parametresi.
Dönüş Değeri
Sıfır olmayan bir değer işlevi başarılı olursa; Aksi halde 0.
Notlar
Çıkarma tüm noktaları içeren en küçük dikdörtgendir lpRectScr1 olmayan kesişimi lpRectScr1 ve lpRectScr2.
Tarafından belirtilen dikdörtgeni lpRectSrc1 dikdörtgeni tarafından belirtilen değişmeden kalacaktır lpRectSrc2 tarafından belirtilen dikdörtgenin tamamen örtüşmeyecek lpRectSrc1 en az biri, x - ya da y-yönergeleri.
Örneğin, lpRectSrc1 olan (10,10, 100,100) ve lpRectSrc2 olan (50,50, 150,150) tarafından için dikdörtgen işaret lpRectSrc1 işlevi döndürüldüğünde, değişmemiş olacaktır. lpRectSrc1 Olan (10,10, 100,100) ve lpRectSrc2 olan (50,10, 150,150) ancak dikdörtgen işaret için tarafından lpRectSrc1 (10,10, 50,100) koordinatları içerecektir işlevini ne zaman verdi.
SubtractRectaynı şey değildir operator - , ne de operator-=. Bu operatörler hiçbiri bugüne kadar çağıran SubtractRect.
Not
İki dikdörtgenin normale gerekir veya bu işlevi başarısız olabilir.Arayabileceğiniz NormalizeRect bu işlevi çağırmadan önce dikdörtgenler normalleştirmek.
Örnek
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);
Gereksinimler
Başlık: atltypes.h