CRgn 類別

封裝 Windows 繪圖裝置介面 (GDI) 區域。

語法

class CRgn : public CGdiObject

成員

公用建構函式

名稱 描述
CRgn::CRgn 建構 CRgn 物件。

公用方法

名稱 描述
CRgn::CombineRgn CRgn設定物件,使其相當於兩個指定CRgn對象的聯集。
CRgn::CopyRgn CRgn設定物件,使其為指定CRgn對象的複本。
CRgn::CreateEllipticRgn CRgn使用橢圓形區域初始化物件。
CRgn::CreateEllipticRgnIndirect CRgn使用 RECT 結構所定義的橢圓區域,初始化 物件。
CRgn::CreateFromData 從指定的區域和轉換數據建立區域。
CRgn::CreateFromPath 從選取到指定裝置內容的路徑建立區域。
CRgn::CreatePolygonRgn CRgn使用多邊形區域初始化物件。 如有必要,系統會將最後一個頂點的線條繪製到第一個,自動關閉多邊形。
CRgn::CreatePolyPolygonRgn CRgn使用由一系列封閉多邊形組成的區域,初始化 物件。 多邊形可能會脫離,或可能會重疊。
CRgn::CreateRectRgn CRgn使用矩形區域初始化物件。
CRgn::CreateRectRgnIndirect CRgn使用 RECT截構所定義的矩形區域,初始化 物件。
CRgn::CreateRoundRectRgn CRgn使用具有圓角的矩形區域,初始化物件。
CRgn::EqualRgn 檢查兩個 CRgn 物件,以判斷它們是否相等。
CRgn::FromHandle 當指定 Windows 區域的句柄時,傳回 物件的指標 CRgn
CRgn::GetRegionData 以描述指定區域的數據填入指定的緩衝區。
CRgn::GetRgnBox 擷取 物件周框的 CRgn 座標。
CRgn::OffsetRgn CRgn依指定的位移移動物件。
CRgn::P tInRegion 判斷指定的點是否在區域中。
CRgn::RectInRegion 判斷指定矩形的任何部分是否在區域的界限內。
CRgn::SetRectRgn CRgn 物件設定為指定的矩形區域。

公用運算子

名稱 描述
CRgn::operator HRGN 傳回 物件中包含的 CRgn Windows 句柄。

備註

區域是視窗內的橢圓形或多邊形區域。 若要使用區域,您可以使用 類別 CRgn 的成員函式搭配定義為 類別 CDC成員的裁剪函式。

建立、改變和擷取其所呼叫區域對象的相關信息的成員函 CRgn 式。

如需使用 CRgn的詳細資訊,請參閱 圖形物件

繼承階層架構

CObject

CGdiObject

CRgn

需求

標題: afxwin.h

CRgn::CombineRgn

結合兩個現有的區域,建立新的 GDI 區域。

int CombineRgn(
    CRgn* pRgn1,
    CRgn* pRgn2,
    int nCombineMode);

參數

pRgn1
識別現有的區域。

pRgn2
識別現有的區域。

nCombineMode
指定結合兩個來源區域時要執行的作業。 它可以是下列任何一個值:

  • RGN_AND 使用兩個區域(交集)的重疊區域。

  • RGN_COPY建立區域 1 的複本(由 pRgn1 識別)。

  • RGN_DIFF建立區域,其中包含區域 1(由 pRgn1 識別)不屬於區域 2 的區域(由 pRgn2 識別)。

  • RGN_OR將這兩個區域全部結合(聯集)。

  • RGN_XOR合併這兩個區域,但移除重疊的區域。

傳回值

指定產生的區域類型。 它可能是下列其中一個值:

  • COMPLEXREGION 新區域具有重疊的框線。

  • 錯誤 沒有建立新的區域。

  • NULLREGION 新區域是空的。

  • SIMPLEREGION 新區域沒有重疊的框線。

備註

區域會結合為 nCombineMode指定。

兩個指定的區域會合併,產生的區域句柄會儲存在物件中 CRgn 。 因此,對象中 CRgn 儲存的任何區域都會由合併的區域取代。

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

使用 CopyRgn 將一個區域直接複製到另一個區域。

範例

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRectRgn(50, 50, 150, 150));
VERIFY(rgnB.CreateRectRgn(100, 100, 200, 200));
VERIFY(rgnC.CreateRectRgn(0, 0, 50, 50));

int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_OR);
ASSERT(nCombineResult != ERROR && nCombineResult != NULLREGION);

CBrush br1, br2, br3;
VERIFY(br1.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &br1, 2, 2));
VERIFY(br2.CreateSolidBrush(RGB(0, 255, 0)));  // rgnB Green
VERIFY(pDC->FrameRgn(&rgnB, &br2, 2, 2));
VERIFY(br3.CreateSolidBrush(RGB(0, 0, 255)));  // rgnC Blue
VERIFY(pDC->FrameRgn(&rgnC, &br3, 2, 2));

CRgn::CopyRgn

將 pRgnSrc定義的區域複製到 物件中CRgn

int CopyRgn(CRgn* pRgnSrc);

參數

pRgnSrc
識別現有的區域。

傳回值

指定產生的區域類型。 它可能是下列其中一個值:

  • COMPLEXREGION 新區域具有重疊的框線。

  • 錯誤 沒有建立新的區域。

  • NULLREGION 新區域是空的。

  • SIMPLEREGION 新區域沒有重疊的框線。

備註

新的區域會取代先前儲存在物件中的 CRgn 區域。 此函式是 CombineRgn 成員函式的特殊案例

範例

請參閱 CRgn::CreateEllipticRgn 的範例

CRgn::CreateEllipticRgn

建立橢圓形區域。

BOOL CreateEllipticRgn(
    int x1,
    int y1,
    int x2,
    int y2);

參數

x1
指定橢圓形周框左上角的邏輯 x 座標。

y1
指定橢圓形周框左上角的邏輯 Y 座標。

x2
指定橢圓形周框右下角的邏輯 X 座標。

y2
指定橢圓形周框右下角的邏輯 Y 座標。

傳回值

如果作業成功,則為非零;否則為 0。

備註

區域是由 x1、y1x2 和 y2指定的周框所定義。 區域會儲存在物件中 CRgn

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

使用函 CreateEllipticRgn 式所建立的區域完成時,應用程式應該從裝置內容中選取區域,並使用函 DeleteObject 式來移除它。

範例

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);

VERIFY(rgnC.CreateRectRgn(0, 0, 1, 1));
int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_AND);
ASSERT(nCombineResult != ERROR && nOffsetResult != NULLREGION);

CBrush brA, brB, brC;
VERIFY(brC.CreateHatchBrush(HS_FDIAGONAL, RGB(0, 0, 255))); // Blue
VERIFY(pDC->FillRgn(&rgnC, &brC));
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 255, 0)));  // rgnB Green
VERIFY(pDC->FrameRgn(&rgnB, &brB, 2, 2));

CRgn::CreateEllipticRgnIndirect

建立橢圓形區域。

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

參數

lpRect
RECT指向結構或CRect物件,其中包含橢圓形周框左上角和右下角的邏輯座標。

傳回值

如果作業成功,則為非零;否則為 0。

備註

區域是由 lpRect 所指向的結構或物件所定義,並儲存在物件中CRgn

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

使用函 CreateEllipticRgnIndirect 式所建立的區域完成時,應用程式應該從裝置內容中選取區域,並使用函 DeleteObject 式來移除它。

範例

請參閱 CRgn::CreateRectRgnIndirect 的範例

CRgn::CreateFromData

從指定的區域和轉換數據建立區域。

BOOL CreateFromData(
    const XFORM* lpXForm,
    int nCount,
    const RGNDATA* pRgnData);

參數

lpXForm
指向 XFORMata 結構,該結構會定義要對區域執行的轉換。 如果此指標為 NULL,則會使用身分識別轉換。

nCount
指定 pRgnData 所指向的位元元數目。

pRgnData
指向 包含區域數據的 RGNDATA 資料結構。

傳回值

如果函式成功則為非零,否則為 0。

備註

應用程式可以藉由呼叫 CRgn::GetRegionData 函式來擷取區域的數據。

CRgn::CreateFromPath

從選取到指定裝置內容的路徑建立區域。

BOOL CreateFromPath(CDC* pDC);

參數

pDC
識別包含封閉路徑的裝置內容。

傳回值

如果函式成功則為非零,否則為 0。

備註

pDC 參數所識別的裝置內容必須包含關閉的路徑。 將路徑轉換成區域之後 CreateFromPath ,Windows 會捨棄裝置內容中的封閉路徑。

CRgn::CreatePolygonRgn

建立多邊形區域。

BOOL CreatePolygonRgn(
    LPPOINT lpPoints,
    int nCount,
    int nMode);

參數

lpPoints
指向結構陣列 POINT 或物件的陣列 CPoint 。 每個結構都會指定多邊形一個頂點的 x 座標和 Y 座標。 結構 POINT 的格式如下:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

nCount
指定 lpPoints 所指向之數位列中的結構或CPoint物件數目POINT

nMode
指定區域的填滿模式。 此參數可以是 ALTERNATE 或 WINDING。

傳回值

如果作業成功,則為非零;否則為 0。

備註

如有必要,系統會將最後一個頂點的線條繪製到第一個,自動關閉多邊形。 產生的區域會儲存在物件中 CRgn

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

當多邊形填滿模式為 ALTERNATE 時,系統會在每個掃描線的奇數和偶數多邊形兩側之間填滿區域。 也就是說,系統會填滿第一和第二端、第三面和第四端之間的區域,依此填滿。

當多邊形填滿模式為WINDING時,系統會使用繪製圖形的方向來判斷是否要填滿區域。 多邊形中的每個線條區段都會以順時針方向或逆時針方向繪製。 每當從封閉區域繪製到圖形外部的虛線通過順時針線段時,計數就會遞增。 當線條通過逆時針線段時,計數會遞減。 當線條到達圖表外部時,如果計數為非零,則會填滿區域。

當應用程式使用以 CreatePolygonRgn 函式建立的區域完成時,它應該會從裝置內容中選取區域,並使用函 DeleteObject 式來移除它。

範例

CRgn   rgnA, rgnB;

CPoint ptVertex[5];

ptVertex[0].x = 180;
ptVertex[0].y = 80;
ptVertex[1].x = 100;
ptVertex[1].y = 160;
ptVertex[2].x = 120;
ptVertex[2].y = 260;
ptVertex[3].x = 240;
ptVertex[3].y = 260;
ptVertex[4].x = 260;
ptVertex[4].y = 160;

VERIFY(rgnA.CreatePolygonRgn(ptVertex, 5, ALTERNATE));

CRect rectRgnBox;
int nRgnBoxResult = rgnA.GetRgnBox(&rectRgnBox);
ASSERT(nRgnBoxResult != ERROR && nRgnBoxResult != NULLREGION);

CBrush brA, brB;
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 0, 255)));  // Blue
rectRgnBox.InflateRect(3, 3);
pDC->FrameRect(&rectRgnBox, &brB);

CRgn::CreatePolyPolygonRgn

建立包含一系列封閉多邊形的區域。

BOOL CreatePolyPolygonRgn(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount,
    int nPolyFillMode);

參數

lpPoints
指向結構陣列 POINT 或定義多邊形頂點的物件陣列 CPoint 。 每個多邊形都必須明確關閉,因為系統不會自動關閉它們。 多邊形會連續指定。 結構 POINT 的格式如下:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

lpPolyCounts
指向整數陣列。 第一個整數會指定 lpPoints 陣列中第一個多邊形中的頂點數目,第二個整數會指定第二個多邊形中的頂點數目等等。

nCount
指定 lpPolyCounts 陣列中的整數總數。

nPolyFillMode
指定多邊形填滿模式。 此值可以是 ALTERNATE 或 WINDING。

傳回值

如果作業成功,則為非零;否則為 0。

備註

產生的區域會儲存在物件中 CRgn

多邊形可能會脫離,或可能會重疊。

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

當多邊形填滿模式為 ALTERNATE 時,系統會在每個掃描線的奇數和偶數多邊形兩側之間填滿區域。 也就是說,系統會填滿第一和第二端、第三面和第四端之間的區域,依此填滿。

當多邊形填滿模式為WINDING時,系統會使用繪製圖形的方向來判斷是否要填滿區域。 多邊形中的每個線條區段都會以順時針方向或逆時針方向繪製。 每當從封閉區域繪製到圖形外部的虛線通過順時針線段時,計數就會遞增。 當線條通過逆時針線段時,計數會遞減。 當線條到達圖表外部時,如果計數為非零,則會填滿區域。

當應用程式使用函 CreatePolyPolygonRgn 式建立的區域完成時,它應該選取裝置內容中的區域,並使用 CGDIObject::D eleteObject 成員函式來移除它。

CRgn::CreateRectRgn

建立儲存在物件中的 CRgn 矩形區域。

BOOL CreateRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

參數

x1
指定區域左上角的邏輯 X 座標。

y1
指定區域左上角的邏輯 Y 座標。

x2
指定區域右下角的邏輯 X 座標。

y2
指定區域右下角的邏輯 Y 座標。

傳回值

如果作業成功,則為非零;否則為 0。

備註

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

使用 所 CreateRectRgn建立的區域完成時,應用程式應該使用 CGDIObject::D eleteObject 成員函式來移除區域。

範例

CRgn   rgn;

BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);

如需其他範例,請參閱 CRgn::CombineRgn

CRgn::CreateRectRgnIndirect

建立儲存在物件中的 CRgn 矩形區域。

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

參數

lpRect
RECT指向結構或CRect物件,其中包含區域左上角和右下角的邏輯座標。 結構 RECT 的格式如下:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

傳回值

如果作業成功,則為非零;否則為 0。

備註

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

使用 所 CreateRectRgnIndirect建立的區域完成時,應用程式應該使用 CGDIObject::D eleteObject 成員函式來移除區域。

範例

CRgn   rgnA, rgnB, rgnC;

CRect rectA(50, 50, 150, 150);
CRect rectB(100, 50, 200, 150);

VERIFY(rgnA.CreateRectRgnIndirect(&rectA));
VERIFY(rgnB.CreateEllipticRgnIndirect(&rectB));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_AND );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  
VERIFY(pDC->FrameRgn( &rgnA, &brA, 2, 2 ));      // rgnA Red

VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));  
VERIFY(pDC->FrameRgn( &rgnB, &brB, 2, 2 ));      // rgnB Green
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));

CRgn::CreateRoundRectRgn

建立矩形區域,其中包含儲存在 物件中的 CRgn 圓角。

BOOL CreateRoundRectRgn(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

參數

x1
指定區域左上角的邏輯 X 座標。

y1
指定區域左上角的邏輯 Y 座標。

x2
指定區域右下角的邏輯 X 座標。

y2
指定區域右下角的邏輯 Y 座標。

x3
指定用來建立圓角的橢圓形寬度。

y3
指定用來建立圓角的橢圓形高度。

傳回值

如果作業成功,則為非零;否則為 0。

備註

區域的大小限制為 32,767 到 32,767 個邏輯單元或 64K 的記憶體,無論大小較小。

當應用程式使用函 CreateRoundRectRgn 式建立的區域完成時,它應該選取裝置內容中的區域,並使用 CGDIObject::D eleteObject 成員函式來移除它。

範例

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRoundRectRgn( 50, 50, 150, 150, 30, 30 ));
VERIFY(rgnB.CreateRoundRectRgn( 200, 75, 250, 125, 50, 50 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  
VERIFY(pDC->FillRgn( &rgnA, &brA));      // rgnA Red Filled

VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));  
VERIFY(pDC->FillRgn( &rgnB, &brB));      // rgnB Green Filled
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));

CRgn::CRgn

建構 CRgn 物件。

CRgn();

備註

數據 m_hObject 成員不會包含有效的 Windows GDI 區域,直到物件以一或多個其他 CRgn 成員函式初始化為止。

範例

請參閱 CRgn::CreateRoundRectRgn 的範例

CRgn::EqualRgn

判斷指定的區域是否相當於儲存在物件中的 CRgn 區域。

BOOL EqualRgn(CRgn* pRgn) const;

參數

pRgn
識別區域。

傳回值

如果兩個區域相等,則為非零;否則為 0。

範例

CRgn   rgnA, rgnB;

VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);
ASSERT(FALSE == rgnB.EqualRgn(&rgnA));

CRgn::FromHandle

當指定 Windows 區域的句柄時,傳回 物件的指標 CRgn

static CRgn* PASCAL FromHandle(HRGN hRgn);

參數

hRgn
指定 Windows 區域的句柄。

傳回值

CRgn 物件的指標。 如果函式未成功,則傳回值為 NULL。

備註

CRgn如果物件尚未附加至句柄,則會建立並附加暫存CRgn物件。 這個暫存 CRgn 物件只有在下次應用程式在其事件迴圈中有閑置時間為止才有效,此時會刪除所有暫存圖形物件。 另一種方法是,暫存物件只有在處理一個視窗訊息時才有效。

CRgn::GetRegionData

以描述區域的數據填入指定的緩衝區。

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

參數

lpRgnData
指向 接收資訊的 RGNDATA 數據結構。 如果此參數為NULL,傳回值會包含區域數據所需的位元元組數目。

nCount
指定 lpRgnData 緩衝區的大小,以位元組為單位。

傳回值

如果函式成功,且 nCount 指定足夠的位元組數目,則傳回值一律 為 nCount。 如果函式失敗,或 如果 nCount 指定小於足夠的位元組數目,則傳回值為 0 (error)。

備註

此數據報括組成區域之矩形的維度。 此函式會與 CRgn::CreateFromData 函式搭配使用。

CRgn::GetRgnBox

擷取 物件周框的 CRgn 座標。

int GetRgnBox(LPRECT lpRect) const;

參數

lpRect
RECT指向要接收周框座標的結構或CRect物件。 結構 RECT 的格式如下:

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

傳回值

指定區域的型別。 它可以是下列任何一個值:

  • COMPLEXREGION 區域具有重疊的框線。

  • NULLREGION 區域是空的。

  • ERROR CRgn 物件未指定有效的區域。

  • SIMPLEREGION 區域沒有重疊的框線。

範例

請參閱 CRgn::CreatePolygonRgn 的範例

CRgn::OffsetRgn

依指定的位移移動儲存在物件中的 CRgn 區域。

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

參數

x
指定要向左或向右移動的單位數目。

y
指定要向上或向下移動的單位數目。

point
x 座標會指定要向左或向右移動的單位數目。 點Y 座標會指定要向上或向下行動的單位數目。 point 參數可以是 POINT 結構或 CPoint 物件。

傳回值

新區域的類型。 它可以是下列任何一個值:

  • COMPLEXREGION 區域具有重疊的框線。

  • ERROR 區域句柄無效。

  • NULLREGION 區域是空的。

  • SIMPLEREGION 區域沒有重疊的框線。

備註

函式會沿著 x 軸移動區域 x 單位,沿著 y 軸移動 y 單位。

區域的座標值必須小於或等於 32,767,大於或等於 -32,768。 必須謹慎選擇 xy 參數,以防止無效的區域座標。

範例

請參閱 CRgn::CreateEllipticRgn 的範例

CRgn::operator HRGN

使用此運算子取得 物件的附加 Windows GDI 句柄 CRgn

operator HRGN() const;

傳回值

如果成功,則為 物件所 CRgn 代表之 Windows GDI 物件的句柄,否則為 NULL。

備註

這個運算符是一個轉型運算符,可支援直接使用 HRGN 物件。

如需使用圖形對象的詳細資訊,請參閱 Windows SDK 中的圖形物件一文

CRgn::P tInRegion

檢查 x 和 y 指定的點是否位於儲存在 物件中的CRgn區域中。

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

參數

x
指定要測試之點的邏輯 x 座標。

y
指定要測試之點的邏輯 Y 座標。

point
x 和 y 座標會指定要測試值的點 x 和 y 座標。 point 參數可以是 POINT 結構或 CPoint 物件。

傳回值

如果點位於區域,則為非零;否則為 0。

CRgn::RectInRegion

判斷 lpRect指定之矩形的任何部分是否在物件中儲存的區域界限內CRgn

BOOL RectInRegion(LPCRECT lpRect) const;

參數

lpRect
指向 RECT 結構或 CRect 物件。 結構 RECT 的格式如下:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

傳回值

如果指定矩形的任何部分位於區域界限內,則為非零;否則為 0。

CRgn::SetRectRgn

建立矩形區域。

void SetRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

void SetRectRgn(LPCRECT lpRect);

參數

x1
指定矩形區域左上角的 X 座標。

y1
指定矩形區域左上角的 Y 座標。

x2
指定矩形區域右下角的 X 座標。

y2
指定矩形區域右下角的 Y 座標。

lpRect
指定矩形區域。 可以是結構的指標 RECTCRect 物件。

備註

不過,不同於 CreateRectRgn,它不會從本機 Windows 應用程式堆積配置任何其他記憶體。 相反地,它會使用為儲存在 物件中的 CRgn 區域配置的空間。 這表示 CRgn 在呼叫 SetRectRgn之前,對象必須已經使用有效的 Windows 區域初始化。 x1、y1x2y2 指定的點會指定配置空間的大小下限。

使用此函式, CreateRectRgn 而不是成員函式,以避免呼叫本機記憶體管理員。

另請參閱

CWnd 類別
階層架構圖表