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
的詳細資訊,請參閱 圖形物件。
繼承階層架構
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
指向 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。 必須謹慎選擇 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 座標。
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
指定矩形區域。 可以是結構的指標 RECT
或 CRect
物件。
備註
不過,不同於 CreateRectRgn,它不會從本機 Windows 應用程式堆積配置任何其他記憶體。 相反地,它會使用為儲存在 物件中的 CRgn
區域配置的空間。 這表示 CRgn
在呼叫 SetRectRgn
之前,對象必須已經使用有效的 Windows 區域初始化。 x1、y1、x2 和 y2 指定的點會指定配置空間的大小下限。
使用此函式, CreateRectRgn
而不是成員函式,以避免呼叫本機記憶體管理員。