Bagikan melalui


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 topvariabel 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 CRectkiri 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 CRectLPCRECT.
CRect::operator LPRECT Mengonversi ke CRectLPRECT.
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. righttopleft

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 CRectatas .

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 CRectkiri atas .

bottomRight
Menentukan posisi CRectkanan bawah .

Keterangan

Jika tidak ada argumen yang diberikan, left, , righttop, dan bottom anggota diatur ke 0.

CRectKonstruktor (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 CRectatas .

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 CRectkiri 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 CRectkiri .

t
Menentukan jumlah unit untuk mengembang bagian CRectatas .

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 CRectnilai 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, , WidthUnionRectEqualRectIsRectEmptySubtractRectSizePtInRectIntersectRect, 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

CRectx 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 CRectLPCRECT.

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 CRectLPRECT.

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 ) cyditambahkan ke CRectposisi '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 ) cydikurangi dari CRectposisi '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 CRectrect2.

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 CRectrect2.

CRect operator|(const RECT&
rect2) const throw();

Parameter

rect2
RECT Berisi atau CRect.

Tampilkan Nilai

Yang CRect merupakan persatuan dan CRectrect2.

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 lpRectSrc2lpRectSrc1.

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

Baca juga

CPoint Kelas
CSize Kelas
RECT