CRect
Kelas
Mirip dengan struktur Windows RECT
.
Sintaks
class CRect : public tagRECT
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CRect::CRect |
Membuat CRect objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CRect::BottomRight |
Mengembalikan titik kanan bawah .CRect |
CRect::CenterPoint |
Mengembalikan titik tengah .CRect |
CRect::CopyRect |
Menyalin dimensi persegi panjang sumber ke CRect . |
CRect::DeflateRect |
Mengurangi lebar dan tinggi CRect . |
CRect::EqualRect |
Menentukan apakah CRect sama dengan persegi panjang yang diberikan. |
CRect::Height |
Menghitung tinggi CRect . |
CRect::InflateRect |
Meningkatkan lebar dan tinggi CRect . |
CRect::IntersectRect |
CRect Set sama dengan persimpangan dua persegi panjang. |
CRect::IsRectEmpty |
Menentukan apakah CRect kosong. CRect kosong jika lebar dan/atau tinggi adalah 0. |
CRect::IsRectNull |
Menentukan apakah top variabel anggota , bottom , left , dan right semuanya sama dengan 0. |
CRect::MoveToX |
CRect Berpindah ke koordinat x yang ditentukan. |
CRect::MoveToXY |
CRect Berpindah ke koordinat x- dan y yang ditentukan. |
CRect::MoveToY |
CRect Berpindah ke koordinat y yang ditentukan. |
CRect::NormalizeRect |
Menstandarkan tinggi dan lebar CRect . |
CRect::OffsetRect |
CRect Berpindah menurut offset yang ditentukan. |
CRect::PtInRect |
Menentukan apakah titik yang ditentukan terletak di dalam CRect . |
CRect::SetRect |
Mengatur dimensi CRect . |
CRect::SetRectEmpty |
CRect Mengatur ke persegi kosong (semua koordinat sama dengan 0). |
CRect::Size |
Menghitung ukuran CRect . |
CRect::SubtractRect |
Mengurangi satu persegi panjang dari yang lain. |
CRect::TopLeft |
Mengembalikan titik CRect kiri atas . |
CRect::UnionRect |
CRect Mengatur sama dengan union dua persegi panjang. |
CRect::Width |
Menghitung lebar CRect . |
Operator Publik
Nama | Deskripsi |
---|---|
CRect::operator - |
Mengurangi offset yang diberikan dari CRect atau mengempis CRect dan mengembalikan hasil CRect . |
CRect::operator LPCRECT |
Mengonversi ke CRect LPCRECT . |
CRect::operator LPRECT |
Mengonversi ke CRect LPRECT . |
CRect::operator != |
Menentukan apakah CRect tidak sama dengan persegi panjang. |
CRect::operator & |
Membuat persimpangan CRect dan persegi panjang dan mengembalikan hasil CRect . |
CRect::operator &= |
CRect Mengatur sama dengan persimpangan CRect dan persegi panjang. |
CRect::operator | |
Membuat persatuan CRect dan persegi panjang dan mengembalikan yang dihasilkan CRect . |
CRect::operator |= |
CRect Set sama dengan union dan CRect persegi panjang. |
CRect::operator + |
Menambahkan offset yang diberikan ke CRect atau mengembang CRect dan mengembalikan hasil CRect . |
CRect::operator += |
Menambahkan offset yang ditentukan ke CRect atau mengembang CRect . |
CRect::operator = |
Menyalin dimensi persegi panjang ke CRect . |
CRect::operator -= |
Mengurangi offset yang ditentukan dari CRect atau mengempis CRect . |
CRect::operator == |
Menentukan apakah CRect sama dengan persegi panjang. |
Keterangan
CRect
juga mencakup fungsi anggota untuk memanipulasi CRect
objek dan struktur Windows RECT
.
Objek CRect
dapat diteruskan sebagai parameter fungsi di mana pun RECT
struktur, LPCRECT
, atau LPRECT
dapat diteruskan.
Catatan
Kelas ini berasal dari tagRECT
struktur. (Nama tagRECT
adalah nama yang kurang umum digunakan untuk RECT
struktur.) Ini berarti bahwa anggota data (, , , dan bottom
) dari RECT
struktur adalah anggota data yang dapat diakses dari CRect
. right
top
left
CRect
berisi variabel anggota yang menentukan titik kiri atas dan kanan bawah persegi panjang.
Saat menentukan CRect
, Anda harus berhati-hati untuk membangunnya sehingga dinormalisasi — dengan kata lain, sehingga nilai koordinat kiri kurang dari kanan dan bagian atas kurang dari bagian bawah. Misalnya, kiri atas (10.10) dan kanan bawah (20.20) mendefinisikan persegi panjang yang dinormalisasi tetapi kiri atas (20.20) dan kanan bawah (10.10) menentukan persegi panjang yang tidak dinormalisasi. Jika persegi panjang tidak dinormalisasi, banyak CRect
fungsi anggota dapat mengembalikan hasil yang salah. (Lihat CRect::NormalizeRect
untuk daftar fungsi-fungsi ini.) Sebelum Anda memanggil fungsi yang memerlukan persegi panjang yang dinormalisasi, Anda dapat menormalkan persegi panjang yang tidak dinormalisasi dengan memanggil NormalizeRect
fungsi .
Berhati-hatilah saat memanipulasi CRect
dengan CDC::DPtoLP
fungsi anggota dan CDC::LPtoDP
. Jika mode pemetaan konteks tampilan sedih sehingga tingkat y negatif, seperti dalam MM_LOENGLISH
, maka CDC::DPtoLP
akan mengubah CRect
sehingga bagian atasnya lebih besar dari bagian bawah. Fungsi seperti Height
dan Size
kemudian akan mengembalikan nilai negatif untuk tinggi yang diubah CRect
, dan persegi panjang akan tidak dinormalisasi.
Saat menggunakan operator yang kelebihan CRect
beban, operand pertama harus berupa CRect
; yang kedua dapat berupa RECT
struktur atau CRect
objek.
Hierarki Warisan
tagRECT
CRect
Persyaratan
Header: atltypes.h
CRect::BottomRight
Koordinat dikembalikan sebagai referensi ke CPoint
objek yang terkandung dalam CRect
.
CPoint& BottomRight() throw();
const CPoint& BottomRight() const throw();
Tampilkan Nilai
Koordinat sudut kanan bawah persegi panjang.
Keterangan
Anda dapat menggunakan fungsi ini untuk mendapatkan atau mengatur sudut kanan bawah persegi. Atur sudut dengan menggunakan fungsi ini di sisi kiri operator penugasan.
Contoh
// 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
Menghitung titik CRect
tengah dengan menambahkan nilai kiri dan kanan dan membagi dengan dua, dan menambahkan nilai atas dan bawah dan membagi dengan dua.
CPoint CenterPoint() const throw();
Tampilkan Nilai
Objek CPoint
yang merupakan titik tengah dari CRect
.
Contoh
// 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
Menyalin persegi panjang lpSrcRect
ke dalam CRect
.
void CopyRect(LPCRECT lpSrcRect) throw();
Parameter
lpSrcRect
Menunjuk ke RECT
struktur atau CRect
objek yang akan disalin.
Contoh
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
Membuat CRect
objek.
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();
Parameter
l
Menentukan posisi kiri .CRect
t
Menentukan bagian CRect
atas .
r
Menentukan posisi yang tepat dari CRect
.
b
Menentukan bagian bawah CRect
.
srcRect
Mengacu pada RECT
struktur dengan koordinat untuk CRect
.
lpSrcRect
Arahkan ke RECT
struktur dengan koordinat untuk CRect
.
point
Menentukan titik asal untuk persegi panjang yang akan dibangun. Sesuai dengan sudut kiri atas.
size
Menentukan perpindahan dari sudut kiri atas ke sudut kanan bawah persegi yang akan dibangun.
topLeft
Menentukan posisi CRect
kiri atas .
bottomRight
Menentukan posisi CRect
kanan bawah .
Keterangan
Jika tidak ada argumen yang diberikan, left
, , right
top
, dan bottom
anggota diatur ke 0.
CRect
Konstruktor (const RECT&
) dan CRect
(LPCRECT
) melakukan CopyRect
. Konstruktor lain menginisialisasi variabel anggota objek secara langsung.
Contoh
// 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
kempes CRect
dengan menggerakkan sisi-sisinya ke tengahnya.
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();
Parameter
x
Menentukan jumlah unit untuk mengempis sisi kiri dan kanan CRect
.
y
Menentukan jumlah unit untuk mengempiskan bagian atas dan bawah CRect
.
size
SIZE
Atau CSize
yang menentukan jumlah unit yang akan di-deflate CRect
. Nilai cx
menentukan jumlah unit untuk mengempis sisi kiri dan kanan dan cy
nilai menentukan jumlah unit untuk mengempis bagian atas dan bawah.
lpRect
Menunjuk ke RECT
struktur atau CRect
yang menentukan jumlah unit untuk mengempiskan setiap sisi.
l
Menentukan jumlah unit untuk mengempis sisi kiri CRect
.
t
Menentukan jumlah unit untuk mengempiskan bagian CRect
atas .
r
Menentukan jumlah unit untuk mengempis sisi kanan CRect
.
b
Menentukan jumlah unit untuk mengempis bagian bawah CRect
.
Keterangan
Untuk melakukan ini, DeflateRect
menambahkan unit ke kiri dan atas dan mengurangi unit dari kanan dan bawah. Parameter adalah DeflateRect
nilai yang ditandatangani; nilai positif deflate CRect
dan nilai negatif melambungkannya.
Dua kelebihan beban pertama mengempiskan kedua pasangan dari sisi yang berlawanan CRect
sehingga lebar totalnya berkurang dua kali x
(atau cx
) dan tinggi totalnya berkurang dua kali y
(atau cy
). Dua lainnya kelebihan beban mengempis setiap sisi secara independen dari CRect
yang lain.
Contoh
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
Menentukan apakah CRect
sama dengan persegi panjang yang diberikan.
BOOL EqualRect(LPCRECT lpRect) const throw();
Parameter
lpRect
Menunjuk ke RECT
struktur atau CRect
objek yang berisi koordinat sudut kiri atas dan kanan bawah persegi panjang.
Tampilkan Nilai
Bukan nol jika dua persegi panjang memiliki nilai atas, kiri, bawah, dan kanan yang sama; jika tidak, 0.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Menghitung tinggi CRect
dengan mengurangi nilai teratas dari nilai bawah.
int Height() const throw();
Tampilkan Nilai
Tinggi CRect
.
Keterangan
Nilai yang dihasilkan bisa negatif.
Catatan
Persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
CRect rect(20, 30, 80, 70);
int nHt = rect.Height();
// nHt is now 40
ASSERT(nHt == 40);
CRect::InflateRect
InflateRect
mengembang CRect
dengan memindahkan sisi-sisinya menjauh dari pusatnya.
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();
Parameter
x
Menentukan jumlah unit untuk mengembang sisi CRect
kiri dan kanan .
y
Menentukan jumlah unit untuk mengembang bagian atas dan bawah CRect
.
size
SIZE
atau CSize
yang menentukan jumlah unit yang akan digabungkan CRect
. Nilai cx
menentukan jumlah unit untuk mengembang sisi kiri dan kanan dan cy
nilai menentukan jumlah unit untuk mengembang bagian atas dan bawah.
lpRect
Menunjuk ke RECT
struktur atau CRect
yang menentukan jumlah unit untuk mengembang setiap sisi.
l
Menentukan jumlah unit untuk mengembang sisi CRect
kiri .
t
Menentukan jumlah unit untuk mengembang bagian CRect
atas .
r
Menentukan jumlah unit untuk mengembang sisi kanan CRect
.
b
Menentukan jumlah unit untuk mengembang bagian bawah CRect
.
Keterangan
Untuk melakukan ini, InflateRect
kurangi unit dari kiri dan atas dan tambahkan unit ke kanan dan bawah. Parameter adalah InflateRect
nilai yang ditandatangani; nilai positif mengembang CRect
dan nilai negatif mengempiskannya.
Dua kelebihan beban pertama mengembang kedua pasangan dari sisi yang berlawanan CRect
sehingga lebar totalnya ditingkatkan dua kali x
(atau cx
) dan tinggi totalnya ditingkatkan dua kali y
(atau cy
). Dua kelebihan beban lainnya mengembang setiap sisi secara independen dari CRect
yang lain.
Contoh
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
Membuat sama CRect
dengan persimpangan dua persegi panjang yang ada.
BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Parameter
lpRect1
Menunjuk ke RECT
struktur atau CRect
objek yang berisi persegi panjang sumber.
lpRect2
Menunjuk ke RECT
struktur atau CRect
objek yang berisi persegi panjang sumber.
Tampilkan Nilai
Bukan nol jika persimpangan tidak kosong; 0 jika persimpangan kosong.
Keterangan
Persimpangan adalah persegi panjang terbesar yang terkandung dalam kedua persegi panjang yang ada.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Menentukan apakah CRect
kosong.
BOOL IsRectEmpty() const throw();
Tampilkan Nilai
Bukan nol jika CRect
kosong; 0 jika CRect
tidak kosong.
Keterangan
Persegi panjang kosong jika lebar dan/atau tinggi adalah 0 atau negatif. Berbeda dari IsRectNull
, yang menentukan apakah semua koordinat persegi panjang adalah nol.
Catatan
Persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Menentukan apakah nilai CRect
atas, kiri, bawah, dan kanan semuanya sama dengan 0.
BOOL IsRectNull() const throw();
Tampilkan Nilai
Bukan nol jika CRect
nilai atas, kiri, bawah, dan kanan semuanya sama dengan 0; jika tidak, 0.
Keterangan
Berbeda dari IsRectEmpty
, yang menentukan apakah persegi panjang kosong.
Contoh
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
Panggil fungsi ini untuk memindahkan persegi panjang ke koordinat x absolut yang ditentukan oleh x
.
void MoveToX(int x) throw();
Parameter
x
Koordinat x absolut untuk sudut kiri atas persegi panjang.
Contoh
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
Panggil fungsi ini untuk memindahkan persegi panjang ke koordinat x- dan y absolut yang ditentukan.
void MoveToXY(int x, int y) throw();
void MoveToXY(POINT point) throw();
Parameter
x
Koordinat x absolut untuk sudut kiri atas persegi panjang.
y
Koordinat y absolut untuk sudut kiri atas persegi panjang.
point
Struktur POINT
yang menentukan sudut kiri atas absolut persegi panjang.
Contoh
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
Panggil fungsi ini untuk memindahkan persegi panjang ke koordinat y absolut yang ditentukan oleh y
.
void MoveToY(int y) throw();
Parameter
y
Koordinat y absolut untuk sudut kiri atas persegi panjang.
Contoh
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
Menormalkan CRect
sehingga tinggi dan lebar positif.
void NormalizeRect() throw();
Keterangan
Persegi dinormalisasi untuk penempatan kuadrian keempat, yang biasanya digunakan Windows untuk koordinat. NormalizeRect
membandingkan nilai atas dan bawah, dan menukarnya jika bagian atas lebih besar dari bagian bawah. Demikian pula, ia menukar nilai kiri dan kanan jika kiri lebih besar dari kanan. Fungsi ini berguna saat berhadapan dengan mode pemetaan yang berbeda dan persegi panjang terbalik.
Catatan
Fungsi anggota berikut CRect
memerlukan persegi panjang yang dinormalisasi agar berfungsi dengan baik: Height
, , Width
UnionRect
EqualRect
IsRectEmpty
SubtractRect
Size
PtInRect
IntersectRect
, operator ==
, , operator !=
, operator |
, , operator |=
, operator &
dan .operator &=
Contoh
CRect rect1(110, 100, 250, 310);
CRect rect2(250, 310, 110, 100);
rect1.NormalizeRect();
rect2.NormalizeRect();
ASSERT(rect1 == rect2);
CRect::OffsetRect
CRect
Berpindah menurut offset yang ditentukan.
void OffsetRect(int x, int y) throw();
void OffsetRect(POINT point) throw();
void OffsetRect(SIZE size) throw();
Parameter
x
Menentukan jumlah untuk berpindah ke kiri atau kanan. Harus negatif untuk bergerak ke kiri.
y
Menentukan jumlah untuk berpindah ke atas atau ke bawah. Harus negatif untuk bergerak ke atas.
point
POINT
Berisi struktur atau CPoint
objek yang menentukan kedua dimensi yang akan dipindahkan.
size
SIZE
Berisi struktur atau CSize
objek yang menentukan kedua dimensi yang akan dipindahkan.
Keterangan
CRect
x
Memindahkan unit di sepanjang sumbu x dan y
unit di sepanjang sumbu y. Parameter x
dan y
adalah nilai yang ditandatangani, sehingga CRect
dapat dipindahkan ke kiri atau kanan dan atas atau bawah.
Contoh
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
Mengonversi ke CRect
LPCRECT
.
operator LPCRECT() const throw();
Keterangan
Saat Anda menggunakan fungsi ini, Anda tidak memerlukan operator alamat (&
). Operator ini akan secara otomatis digunakan ketika Anda meneruskan CRect
objek ke fungsi yang mengharapkan LPCRECT
.
CRect::operator LPRECT
Mengonversi ke CRect
LPRECT
.
operator LPRECT() throw();
Keterangan
Saat Anda menggunakan fungsi ini, Anda tidak memerlukan operator alamat (&
). Operator ini akan secara otomatis digunakan ketika Anda meneruskan CRect
objek ke fungsi yang mengharapkan LPRECT
.
Contoh
Lihat contoh untuk CRect::operator LPCRECT
.
CRect::operator =
srcRect
Menetapkan ke CRect
.
void operator=(const RECT& srcRect) throw();
Parameter
srcRect
Mengacu pada persegi panjang sumber. Bisa berupa RECT
atau CRect
.
Contoh
CRect rect(0, 0, 127, 168);
CRect rect2;
rect2 = rect;
ASSERT(rect2 == CRect(0, 0, 127, 168));
CRect::operator ==
Menentukan apakah rect
sama CRect
dengan membandingkan koordinat sudut kiri atas dan kanan bawahnya.
BOOL operator==(const RECT& rect) const throw();
Parameter
rect
Mengacu pada persegi panjang sumber. Bisa berupa RECT
atau CRect
.
Tampilkan Nilai
Bukan nol jika sama; jika tidak, 0.
Keterangan
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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 !=
Menentukan apakah rect
tidak sama CRect
dengan membandingkan koordinat sudut kiri atas dan kanan bawahnya.
BOOL operator!=(const RECT& rect) const throw();
Parameter
rect
Mengacu pada persegi panjang sumber. Bisa berupa RECT
atau CRect
.
Tampilkan Nilai
Bukan nol jika tidak sama; jika tidak, 0.
Keterangan
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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 +=
Dua kelebihan beban pertama dipindahkan CRect
oleh offset yang ditentukan.
void operator+=(POINT point) throw();
void operator+=(SIZE size) throw();
void operator+=(LPCRECT lpRect) throw();
Parameter
point
Struktur POINT
atau CPoint
objek yang menentukan jumlah unit untuk memindahkan persegi panjang.
size
Struktur SIZE
atau CSize
objek yang menentukan jumlah unit untuk memindahkan persegi panjang.
lpRect
Menunjuk ke RECT
struktur atau CRect
objek yang berisi jumlah unit untuk mengembang setiap sisi CRect
.
Keterangan
Nilai parameter x
dan y
(atau cx
dan cy
) ditambahkan ke CRect
.
Kelebihan beban ketiga bertambah CRect
dengan jumlah unit yang ditentukan di setiap anggota parameter.
Contoh
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2(135, 300, 235, 400);
rect1 += pt;
ASSERT(rect1 == rect2);
CRect::operator -=
Dua kelebihan beban pertama dipindahkan CRect
oleh offset yang ditentukan.
void operator-=(POINT point) throw();
void operator-=(SIZE size) throw();
void operator-=(LPCRECT lpRect) throw();
Parameter
point
Struktur POINT
atau CPoint
objek yang menentukan jumlah unit untuk memindahkan persegi panjang.
size
Struktur SIZE
atau CSize
objek yang menentukan jumlah unit untuk memindahkan persegi panjang.
lpRect
Menunjuk ke RECT
struktur atau CRect
objek yang berisi jumlah unit untuk mengempiskan setiap sisi CRect
.
Keterangan
Nilai parameter x
dan y
(atau cx
dan cy
) dikurangi dari CRect
.
Kelebihan beban ketiga dicemarkan CRect
dengan jumlah unit yang ditentukan di setiap anggota parameter. Perhatikan bahwa kelebihan beban ini berfungsi seperti DeflateRect
.
Contoh
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
rect1 -= pt;
CRect rectResult(65, 170, 165, 270);
ASSERT(rect1 == rectResult);
CRect::operator &=
CRect
Set sama dengan persimpangan CRect
dan rect
.
void operator&=(const RECT& rect) throw();
Parameter
rect
RECT
Berisi atau CRect
.
Keterangan
Persimpangan adalah persegi panjang terbesar yang terkandung dalam kedua persegi panjang.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
Lihat contoh untuk CRect::IntersectRect
.
CRect::operator |=
CRect
Set sama dengan penyatuan CRect
dan rect
.
void operator|=(const RECT& rect) throw();
Parameter
rect
CRect
Berisi atau RECT
.
Keterangan
Penyatuan adalah persegi terkecil yang berisi kedua persegi panjang sumber.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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 +
Dua kelebihan beban pertama mengembalikan CRect
objek yang sama dengan CRect
dialihkan oleh offset yang ditentukan.
CRect operator+(POINT point) const throw();
CRect operator+(LPCRECT lpRect) const throw();
CRect operator+(SIZE size) const throw();
Parameter
point
Struktur POINT
atau CPoint
objek yang menentukan jumlah unit untuk memindahkan nilai pengembalian.
size
Struktur SIZE
atau CSize
objek yang menentukan jumlah unit untuk memindahkan nilai pengembalian.
lpRect
Menunjuk ke RECT
struktur atau CRect
objek yang berisi jumlah unit untuk mengembang setiap sisi nilai yang dikembalikan.
Tampilkan Nilai
Hasil CRect
dari pemindahan atau peningkatan CRect
dengan jumlah unit yang ditentukan dalam parameter .
Keterangan
Parameter parameter x
dan y
(atau cx
dan ) cy
ditambahkan ke CRect
posisi 's.
Kelebihan beban ketiga mengembalikan yang baru CRect
yang sama dengan CRect
yang ditambungkan dengan jumlah unit yang ditentukan dalam setiap anggota parameter.
Contoh
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 -
Dua kelebihan beban pertama mengembalikan CRect
objek yang sama dengan CRect
dialihkan oleh offset yang ditentukan.
CRect operator-(POINT point) const throw();
CRect operator-(SIZE size) const throw();
CRect operator-(LPCRECT lpRect) const throw();
Parameter
point
Struktur POINT
atau CPoint
objek yang menentukan jumlah unit untuk memindahkan nilai pengembalian.
size
Struktur SIZE
atau CSize
objek yang menentukan jumlah unit untuk memindahkan nilai pengembalian.
lpRect
Menunjuk ke RECT
struktur atau CRect
objek yang berisi jumlah unit untuk mengempiskan setiap sisi nilai yang dikembalikan.
Tampilkan Nilai
Hasil CRect
dari pemindahan CRect
atau kempisan dengan jumlah unit yang ditentukan dalam parameter.
Keterangan
Parameter parameter x
dan y
(atau cx
dan ) cy
dikurangi dari CRect
posisi 's.
Kelebihan beban ketiga mengembalikan yang baru CRect
yang sama dengan CRect
yang dicemarkan oleh jumlah unit yang ditentukan dalam setiap anggota parameter. Perhatikan bahwa kelebihan beban ini berfungsi seperti DeflateRect
, bukan SubtractRect
.
Contoh
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 &
Mengembalikan yang CRect
merupakan persimpangan CRect
dan rect2.
CRect operator&(const RECT& rect2) const throw();
Parameter
rect2
RECT
Berisi atau CRect
.
Tampilkan Nilai
Yang CRect
merupakan persimpangan dan CRect
rect2
.
Keterangan
Persimpangan adalah persegi panjang terbesar yang terkandung dalam kedua persegi panjang.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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 |
Mengembalikan yang merupakan persatuan CRect
dan CRect
rect2
.
CRect operator|(const RECT&
rect2) const throw();
Parameter
rect2
RECT
Berisi atau CRect
.
Tampilkan Nilai
Yang CRect
merupakan persatuan dan CRect
rect2
.
Keterangan
Penyatuan adalah persegi terkecil yang berisi kedua persegi panjang.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Menentukan apakah titik yang ditentukan terletak di dalam CRect
.
BOOL PtInRect(POINT point) const throw();
Parameter
point
POINT
Berisi struktur atau CPoint
objek.
Tampilkan Nilai
Bukan nol jika titik berada di dalam CRect
; jika tidak, 0.
Keterangan
Titik berada di dalam CRect
jika terletak di sisi kiri atau atas atau berada di keempat sisi. Titik di sisi kanan atau bawah berada di luar CRect
.
Catatan
Persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Mengatur dimensi CRect
ke koordinat yang ditentukan.
void SetRect(int x1, int y1, int x2, int y2) throw();
Parameter
x1
Menentukan koordinat x dari sudut kiri atas.
y1
Menentukan koordinat y dari sudut kiri atas.
x2
Menentukan koordinat x dari sudut kanan bawah.
y2
Menentukan koordinat y dari sudut kanan bawah.
Contoh
CRect rect;
rect.SetRect(256, 256, 512, 512);
ASSERT(rect == CRect(256, 256, 512, 512));
CRect::SetRectEmpty
Membuat CRect
persegi panjang null dengan mengatur semua koordinat ke nol.
void SetRectEmpty() throw();
Contoh
CRect rect;
rect.SetRectEmpty();
// rect is now (0, 0, 0, 0)
ASSERT(rect.IsRectEmpty());
CRect::SIZE
Anggota cx
dan cy
dari nilai pengembalian berisi tinggi dan lebar CRect
.
CSize Size() const throw();
Tampilkan Nilai
Objek CSize
yang berisi ukuran CRect
.
Keterangan
Tinggi atau lebar bisa negatif.
Catatan
Persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
CRect rect(10, 10, 50, 50);
CSize sz = rect.Size();
ASSERT(sz.cx == 40 && sz.cy == 40);
CRect::SubtractRect
Membuat dimensi CRect
sama dengan pengurangan dari lpRectSrc2
lpRectSrc1
.
BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2) throw();
Parameter
lpRectSrc1
Menunjuk ke RECT
struktur atau CRect
objek tempat persegi panjang akan dikurangi.
lpRectSrc2
Menunjuk ke RECT
struktur atau CRect
objek yang akan dikurangi dari persegi panjang yang diarahkan ke lpRectSrc1
parameter .
Tampilkan Nilai
Bukan nol jika fungsi berhasil; jika tidak, 0.
Keterangan
Pengurangan adalah persegi terkecil yang berisi semua titik di lpRectScr1
yang tidak berada di persimpangan lpRectScr1
dan lpRectScr2
.
Persegi panjang yang ditentukan oleh lpRectSrc1
akan tidak berubah jika persegi panjang yang ditentukan oleh lpRectSrc2
tidak sepenuhnya tumpang tindih persegi panjang yang ditentukan oleh lpRectSrc1
setidaknya salah satu arah x atau y.
Misalnya, jika lpRectSrc1
(10.10,10, 100.100) dan lpRectSrc2
(50.50, 150.150), persegi panjang yang menunjuk ke lpRectSrc1
tidak akan berubah ketika fungsi dikembalikan. Jika lpRectSrc1
(10.10, 100.100) dan lpRectSrc2
(50.10, 150.150), namun, persegi panjang yang dialirkan lpRectSrc1
akan berisi koordinat (10.10, 50.100) ketika fungsi dikembalikan.
SubtractRect
tidak sama dengan operator - atau operator -=. Tidak satu pun dari operator ini pernah memanggil SubtractRect
.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Koordinat dikembalikan sebagai referensi ke CPoint
objek yang terkandung dalam CRect
.
CPoint& TopLeft() throw();
const CPoint& TopLeft() const throw();
Tampilkan Nilai
Koordinat sudut kiri atas persegi panjang.
Keterangan
Anda dapat menggunakan fungsi ini untuk mendapatkan atau mengatur sudut kiri atas persegi panjang. Atur sudut dengan menggunakan fungsi ini di sisi kiri operator penugasan.
Contoh
Lihat contoh untuk CRect::CenterPoint
.
CRect::UnionRect
Membuat dimensi CRect
sama dengan penyatuan dua persegi panjang sumber.
BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Parameter
lpRect1
Menunjuk ke RECT
atau CRect
yang berisi persegi panjang sumber.
lpRect2
Menunjuk ke RECT
atau CRect
yang berisi persegi panjang sumber.
Tampilkan Nilai
Bukan nol jika serikat tidak kosong; 0 jika serikat kosong.
Keterangan
Penyatuan adalah persegi terkecil yang berisi kedua persegi panjang sumber.
Windows mengabaikan dimensi persegi panjang kosong; yaitu, persegi panjang yang tidak memiliki tinggi atau tidak memiliki lebar.
Catatan
Kedua persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
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
Menghitung lebar CRect
dengan mengurangi nilai kiri dari nilai kanan.
int Width() const throw();
Tampilkan Nilai
Lebar CRect
.
Keterangan
Lebarnya bisa negatif.
Catatan
Persegi panjang harus dinormalisasi atau fungsi ini mungkin gagal. Anda dapat memanggil NormalizeRect
untuk menormalkan persegi sebelum memanggil fungsi ini.
Contoh
CRect rect(20, 30, 80, 70);
int nWid = rect.Width();
// nWid is now 60
ASSERT(nWid == 60);