共用方式為


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、y1 x2 和 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
指向 XFORM ata 結構,該結構會定義要對區域執行的轉換。 如果此指標為 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
指定要向上或向下移動的單位數目。


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

傳回值

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

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

  • ERROR 區域控制碼無效。

  • NullREGION 區域是空的。

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

備註

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

區域的座標值必須小於或等於 32,767,大於或等於 -32,768。 必須謹慎選擇 x y 參數,以防止不正確區域座標。

範例

請參閱 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 座標。


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、 y1 x2 y2 指定的 點會指定配置空間的大小下限。

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

另請參閱

CWnd 類別
階層架構圖表