RECT Yapısı ve CRect Sınıfı
CRect sınıfı dikdörtgensel koordinat işlemlerini yapan yararlı ve sık kullanılan bir sınıftır.
typedef struct tagRECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
class CRect : public tagRECT {
// …..
};
Görüldüğü gibi CRect sınıfı da RECT yapısından türetilmiştir.
Sınıfın başlangıç fonksiyonları şunlardır:
CRect();
CRect(int l, int t, int r, int b);
CRect(const RECT &rect);
CRect(POINT topLeft, POINT bottomRight)
CRect sınıfı özellikle CWnd::Create fonksiyonunda RECT & parametresini karşılamak amacıyla kullanılır. Örneğin:
wnd.Create(….., CRect(10, 10, 20, 30), …..);
CRect türünden nesne yoluyla sınıfın veri elemanlarına erişilebilir. CRect sınıfı yalnızca koordinatlar üzerinde aritmetik işlemler yapan bir sınıftır. Faydalı üye fonksiyonlarından bazıları şunlardır:
int CRect::Height() const;
int CRect::Width() const;
Bu fonksiyonlar dikdörtgenin yüksekliğini ve genişliğini bulur.
BOOL CRect::IsRectEmpty() const;
BOOL CRect::IsRectNull() const;
Bu fonksiyonlar bölgenin alansal olarak boş olduğunu ve tamamen 0 değerlerinden oluştuğunu bulmaya çalışır.
BOOL CRect::PtInRect(POINT point) const;
Bir noktanın dikdörtgenin içerisinde olup olmadığını bulur.
Sınıfın en fazla kullanılan üye fonksiyonlarından ikisi InflateRect ve DeflateRect fonksiyonlarıdır. Inflate işlemi bir dikdörtgeni sol üst ve sağ alt köşegenlerinden açmayı, deflate işlemi ise büzmeyi anlatır. Bu fonksiyonların pek çok biçimi vardır.
void CRect::InflateRect(int x, int y);
void CRect::DeflateRect(int x, int y);
Fonksiyonun x ve y parametreleri açım değerleridir. Genellikle x ve y değerleri birbirine eşit alınır. Bu parametreler negatif olabilir. O zaman büzmek anlamına gelir. Zaten InflateRect ile DeflateRect arasında yalnızca işaret farkı vardır. Dikdörtgenin sol üst ve sağ alt köşesinin koordinatları TopLeft ve BottomRight fonksiyonlarıyla elde edilebilir:
CPoint &TopLeft();
CPoint &BottomRight();
Sınıfın RECT türünden adrese dönüşüm yapan bir tür dönüştürme operatör fonksiyonu vardır. Bu fonksiyon sayesinde LPRECT parametresi isteyen API fonksiyonlarına kolay parametre verilebilir. Şüphesiz bu operatör fonksiyonu kendi veri elemanlarının başlangıç adresiyle geri dönmektedir.
CRect::operator LPRECT();
Bunların yanı sıra iki CRect nesnesi için ==, +=, -=, +, - gibi aritmetik operatör fonksiyonları da tanımlanmıştır. CRect sınıfının başka üye fonksiyonları da vardır.
