CRgn クラス

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

Windows のグラフィック デバイス インターフェイス (GDI) の領域をカプセル化したものです。

class CRgn : public CGdiObject  

パブリック コンストラクター

名前説明
CRgn::CRgnCRgn オブジェクトを構築します。

パブリック メソッド

名前説明
CRgn::CombineRgnセット、CRgnオブジェクトを指定した&2; つの共用体に同等である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::EqualRgn2 つCRgnオブジェクトが等しいかどうかを決定します。
CRgn::FromHandleポインターを返す、 CRgn Windows 領域へのハンドルが指定されるとします。
CRgn::GetRegionData指定された領域を示すデータを指定したバッファーに格納します。
CRgn::GetRgnBox外接する四角形の座標を取得、CRgnオブジェクトです。
CRgn::OffsetRgn移動、CRgn指定されたオフセットでのオブジェクト。
CRgn::PtInRegion指定した点がリージョンにするかどうかを判断します。
CRgn::RectInRegion指定した四角形の任意の部分が、領域の境界内かどうかを判断します。
CRgn::SetRectRgnセット、CRgnオブジェクトを指定した四角形領域。

パブリック演算子

名前説明
CRgn::operator HRGN含まれる Windows ハンドルを返す、CRgnオブジェクトです。

領域は、ウィンドウ内での楕円形または多角形領域です。 クラスのメンバー関数を使用する領域を使用して、CRgnクラスのメンバーとして定義されているクリッピング関数とCDCです。

メンバー関数は、CRgnを作成、変更、および呼び出される領域オブジェクトに関する情報を取得します。

使用する方法についてCRgnを参照してくださいグラフィック オブジェクトします。

CObject

CGdiObject

CRgn

ヘッダー: afxwin.h

既存の&2; つの領域を組み合わせることによって、新しい GDI 領域を作成します。

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

パラメーター

pRgn1
既存の領域を識別します。

pRgn2
既存の領域を識別します。

nCombineMode
2 つの領域を結合するときに実行する操作を指定します。 次の値のいずれかを指定できます。

  • RGN_AND (積集合) の両方のリージョンが重複する領域を使用します。

  • RGN_COPYリージョン 1 のコピーを作成 (で識別されるpRgn1)。

  • RGN_DIFF領域 1 の部分から成る領域を作成する (で識別されるpRgn1) 領域 2 の一部ではない (で識別されるpRgn2)。

  • RGN_OR全体 (union) の両方の領域を結合します。

  • RGN_XOR両方のリージョンを組み合わせたものですが重複する領域を削除します。

戻り値

結果として得られる領域の種類を指定します。 次の値のいずれかを指定できます。

  • COMPLEXREGION新しい領域には罫線を重複しています。

  • エラー新しい領域は作成します。

  • NULLREGION新しい領域が空です。

  • SIMPLEREGION新しい領域には、重複する境界がありません。

コメント

領域は結合の指定に従ってnCombineModeします。

2 つの領域は組み合わされ、結果として得られる領域ハンドルに格納されている、CRgnオブジェクトです。 どのような領域に格納されるため、CRgnオブジェクトは、結合された領域で置き換えられます。

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

使用CopyRgn単に&1; つの領域を別のリージョンにコピーします。

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

によって定義される領域をコピーpRgnSrcに、CRgnオブジェクトです。

int CopyRgn(CRgn* pRgnSrc);

パラメーター

pRgnSrc
既存の領域を識別します。

戻り値

結果として得られる領域の種類を指定します。 次の値のいずれかを指定できます。

  • COMPLEXREGION新しい領域には罫線を重複しています。

  • エラー新しい領域は作成します。

  • NULLREGION新しい領域が空です。

  • SIMPLEREGION新しい領域には、重複する境界がありません。

コメント

新しい領域に格納されていた領域を置換する、CRgnオブジェクトです。 この関数の特殊なケースは、 CombineRgnメンバー関数。

例を参照してくださいCRgn::CreateEllipticRgnします。

楕円の領域を作成します。

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

パラメーター

x1
論理で楕円の外接する四角形の左上隅の x 座標を指定します。

y1
論理で楕円の外接する四角形の左上隅の y 座標を指定します。

x2
論理で楕円の外接する四角形の右下隅の x 座標を指定します。

y2
論理で楕円の外接する四角形の右下隅の y 座標を指定します。

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

指定された外接する四角形によって定義領域x1y1x2、およびy2です。 領域は、CRgnオブジェクトです。

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

作成された領域の使用の終了時、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 ));   

楕円の領域を作成します。

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

パラメーター

lpRect
指す、RECT構造体、またはCRect楕円の外接する四角形の左上隅および右下隅の論理座標を格納しているオブジェクト。

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

構造体またはによって指されるオブジェクトによって、領域が定義されているlpRectに格納されて、CRgnオブジェクトです。

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

作成された領域の使用の終了時、CreateEllipticRgnIndirect関数の場合、アプリケーションは、デバイス コンテキストを使用するのリージョンを選択する必要があります、DeleteObject関数を削除します。

例を参照してくださいCRgn::CreateRectRgnIndirectします。

指定された領域と変換のデータから領域を作成します。

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

パラメーター

lpXForm
指す、 XFORM領域で実行する変換を定義するデータ構造です。 このポインターが場合NULL、識別情報の変換を使用します。

nCount
指すバイト数を指定pRgnDataします。

pRgnData
指す、 RGNDATA地域のデータを格納するデータ構造です。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

コメント

アプリケーションでは、地域のデータを呼び出すことによって取得できます、CRgn::GetRegionData関数です。

指定したデバイス コンテキストに選択されているパスからの領域を作成します。

BOOL CreateFromPath(CDC* pDC);

パラメーター

pDC
閉じたパスを格納しているデバイス コンテキストを識別します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

コメント

識別されるデバイス コンテキスト、pDCパラメーターは、閉じたパスを含める必要があります。 後CreateFromPath領域、Windows をパスに変換がデバイス コンテキストから閉じたパスを破棄します。

多角形の領域を作成します。

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

パラメーター

lpPoints
配列を指すポイント構造体や配列のCPointオブジェクトです。 各構造体は、x 座標と y 座標、多角形の頂点を&1; つの値を指定します。 ポイント構造体には、次の形式。

typedef struct tagPOINT {

int x;

int y;

} POINT;

nCount
数を指定ポイント構造体またはCPointが配列内のオブジェクトが指すlpPointsします。

nMode
領域の塗りつぶしモードを指定します。 このパラメーターは、いずれかを指定できます代替またはワインディングします。

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

システム多角形自動的に閉じます、必要に応じて、最初最後の頂点から線が描画します。 結果として得られる領域に格納、CRgnオブジェクトです。

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

多角形の塗りつぶしモードのときは代替システムは、各スキャン ラインに奇数し、偶数の多角形の辺の間で領域を塗りつぶします。 つまり、システムは、最初と&2; 番目の側の間で、3 番目と&4; 番目の側との間の領域を塗りつぶします。

多角形の塗りつぶしモードのときはワインディングシステムは、図が描いた領域を入力するかどうかを判断する方向を使用します。 多角形の場合は、各直線セグメントは、時計回りまたは反時計回りのいずれかに表示されます。 閉じた領域から図形の外側に描画架空の線が時計回りの直線セグメントを通過するたびに、カウントがインクリメントされます。 行が反時計回りに回転線セグメントを経過すると、カウントがデクリメントします。 図形の外側の行に達したら、カウントがゼロ以外の領域に入力されます。

アプリケーションが終了した場合に作成された領域を使用して、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 );

一連の閉じた多角形で構成される領域を作成します。

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

パラメーター

lpPoints
配列を指すポイント構造体や配列のCPoint多角形の頂点を定義するオブジェクト。 システムは自動的には閉じないために、各多角形を明示的に閉じる必要があります。 多角形が連続的に指定します。 ポイント構造体には、次の形式。

typedef struct tagPOINT {

int x;

int y;

} POINT;

lpPolyCounts
整数の配列を指します。 最初の整数の最初の多角形の頂点の数を指定する、 lpPoints 、2 番目の整数の配列が&2; つ目の多角形の頂点の数を指定します。

nCount
指定の整数値の合計数、lpPolyCounts配列。

nPolyFillMode
多角形の塗りつぶしモードを指定します。 この値は、いずれかの代替またはワインディングします。

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

結果として得られる領域に格納、CRgnオブジェクトです。

多角形、切り離されたか、重なる可能性があります。

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

多角形の塗りつぶしモードのときは代替システムは、各スキャン ラインに奇数し、偶数の多角形の辺の間で領域を塗りつぶします。 つまり、システムは、最初と&2; 番目の側の間で、3 番目と&4; 番目の側との間の領域を塗りつぶします。

多角形の塗りつぶしモードのときはワインディングシステムは、図が描いた領域を入力するかどうかを判断する方向を使用します。 多角形の場合は、各直線セグメントは、時計回りまたは反時計回りのいずれかに表示されます。 閉じた領域から図形の外側に描画架空の線が時計回りの直線セグメントを通過するたびに、カウントがインクリメントされます。 行が反時計回りに回転線セグメントを経過すると、カウントがデクリメントします。 図形の外側の行に達したら、カウントがゼロ以外の領域に入力されます。

アプリケーションが終了した場合に作成された領域を使用して、CreatePolyPolygonRgn関数の場合、デバイス コンテキストのリージョンを選択する必要があります、 CGDIObject::DeleteObjectメンバー関数を削除します。

格納されている四角形の領域を作成、CRgnオブジェクトです。

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

パラメーター

x1
領域の左上隅の論理の x 座標を指定します。

y1
論理で領域の左上隅の y 座標を指定します。

x2
領域の右下隅の論理の x 座標を指定します。

y2
論理で領域の右下隅の y 座標を指定します。

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

によって作成された領域の使用の終了時CreateRectRgn、アプリケーションを使用する必要があります、 CGDIObject::DeleteObject領域を削除するメンバー関数。

   CRgn   rgn;

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

たとえば、次を参照してください。 CRgn::CombineRgnします。

格納されている四角形の領域を作成、CRgnオブジェクトです。

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

パラメーター

lpRect
指す、RECT構造またはCRect領域の左上隅および右下隅の論理座標を格納しているオブジェクト。 RECT構造体には、次の形式。

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

戻り値

操作が成功した場合は 0 以外。それ以外の場合 0 を返します。

コメント

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

によって作成された領域の使用の終了時CreateRectRgnIndirect、アプリケーションを使用する必要があります、 CGDIObject::DeleteObject領域を削除するメンバー関数。

   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オブジェクトです。

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 以外。それ以外の場合 0 を返します。

コメント

領域のサイズが 32,767 で 32,767 の論理ユニット、またはメモリの 64 K に制限は、どちらか小さい方です。

アプリケーションが終了した場合に作成された領域を使用して、CreateRoundRectRgn関数の場合、デバイス コンテキストのリージョンを選択する必要があります、 CGDIObject::DeleteObjectメンバー関数を削除します。

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

コメント

m_hObjectデータ メンバーが含まれていない、有効な Windows GDI 地域にはとその他の&1; つ以上のオブジェクトが初期化されるまでCRgnメンバー関数。

例を参照してくださいCRgn::CreateRoundRectRgnします。

指定された領域に格納されている領域に相当するかどうかを判断、CRgnオブジェクトです。

BOOL EqualRgn(CRgn* pRgn) const;  

パラメーター

pRgn
領域を識別します。

戻り値

2 つのリージョンが等しい場合は 0 以外。それ以外の場合 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 Windows 領域へのハンドルが指定されるとします。

static CRgn* PASCAL FromHandle(HRGN hRgn);

パラメーター

hRgn
Windows の領域を識別するハンドルを指定します。

戻り値

ポインター、CRgnオブジェクトです。 関数が正常に実行されなかった場合、戻り値はNULLします。

コメント

場合、CRgnオブジェクトが、一時的なハンドルに既にアタッチされていないCRgnオブジェクトが作成され、接続されています。 この一時CRgnだけですべて一時的なグラフィックを時間があるオブジェクトは削除されるまで、次回、アプリケーションのアイドル時間のイベント ループで、オブジェクトが有効です。 言い換えると、別の方法は、1 つのウィンドウ メッセージを処理中に一時オブジェクトが有効でのみことです。

データ領域を説明するには、指定したバッファーを設定します。

int GetRegionData(
    LPRGNDATA lpRgnData,  
    int nCount) const;  

パラメーター

lpRgnData
指す、 RGNDATA情報を受信するデータ構造です。 このパラメーターは場合NULL、戻り値には、地域のデータに必要なバイト数が含まれています。

nCount
サイズ (バイト単位) を指定、lpRgnDataバッファー。

戻り値

関数が成功した場合とnCount十分な数を指定します (バイト単位) の戻り値は常にnCountします。 関数が失敗した場合、または場合nCount以下を指定適切なバイト数、戻り値は 0 (エラー)。

コメント

このデータには、領域を構成する四角形のディメンションが含まれています。 この関数は組み合わせて使用、CRgn::CreateFromData関数です。

外接する四角形の座標を取得、CRgnオブジェクトです。

int GetRgnBox(LPRECT lpRect) const;  

パラメーター

lpRect
指す、RECT構造またはCRect外接する四角形の座標を受け取るオブジェクト。 RECT構造体には、次の形式。

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

戻り値

領域の型を指定します。 次の値のいずれかを指定できます。

  • COMPLEXREGION領域には罫線を重複しています。

  • NULLREGION領域が空です。

  • エラー CRgnオブジェクトは、有効な地域を指定しません。

  • SIMPLEREGION領域に重複する境界がありません。

例を参照してくださいCRgn::CreatePolygonRgnします。

格納されている領域を移動、CRgn指定されたオフセットでのオブジェクト。

int OffsetRgn(
    int x,  
    int y);  
  
int OffsetRgn(POINT point);

パラメーター

x
左に移動する単位数を指定します。

y
上下に移動する単位の数を指定します。

point
X 座標point左に移動する単位の数を指定します。 Y 座標pointを上下に移動する単位の数を指定します。 pointパラメーターには、いずれかを指定できます、ポイント構造体、またはCPointオブジェクトです。

戻り値

新しい領域の種類。 次の値のいずれかを指定できます。

  • COMPLEXREGION領域には罫線を重複しています。

  • エラー領域ハンドルが無効です。

  • NULLREGION領域が空です。

  • SIMPLEREGION領域に重複する境界がありません。

コメント

関数は、領域を移動x 、x 軸に沿った単位とy y 軸に沿った単位です。

領域の座標の値は、32,767 および以上-32,768 以下である必要があります。 Xyパラメーターは無効な領域の座標値を防ぐために慎重に選択する必要があります。

例を参照してくださいCRgn::CreateEllipticRgnします。

この演算子の接続されている Windows GDI ハンドルの取得を使用して、CRgnオブジェクトです。

operator HRGN() const;  

戻り値

かどうかは成功すると、Windows GDI オブジェクトへのハンドルによって表される、CRgnオブジェクト。 それ以外の場合NULLします。

コメント

この演算子はキャスト演算子のHRGNオブジェクトです。

グラフィック オブジェクトの使い方の詳細については、記事を参照してください。グラフィック オブジェクトで、Windows SDKです。

チェックするかどうかで指定したポイントxyに格納されている地域では、CRgnオブジェクトです。

BOOL PtInRegion(
    int x,  
    int y) const;  
  
BOOL PtInRegion(POINT point) const;  

パラメーター

x
論理でテストする点の x 座標を指定します。

y
論理でテストする点の y 座標を指定します。

point
X 座標と y 座標pointの値をテストする点の x 座標と y 座標を指定します。 pointパラメーターを指定できますか、ポイント構造体、またはCPointオブジェクトです。

戻り値

ポイントがリージョンにある場合は 0 以外。それ以外の場合 0 を返します。

四角形の任意の部分がで指定されたかどうかを判断lpRectに格納されている領域の境界内にあり、CRgnオブジェクトです。

BOOL RectInRegion(LPCRECT lpRect) const;  

パラメーター

lpRect
指す、RECT構造またはCRectオブジェクトです。 RECT構造体には、次の形式。

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

戻り値

指定された四角形の任意の部分が、領域の境界内にある場合は 0 以外。それ以外の場合 0 を返します。

四角形の領域を作成します。

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オブジェクト既に初期化されていなければなりませんを呼び出す前に有効な Windows 領域SetRectRgnします。 指定される点x1y1x2、およびy2割り当て済み領域の最小サイズを指定します。

代わりにこの関数を使用して、CreateRectRgnローカル メモリ マネージャーへの呼び出しを避けるためにメンバー関数。

CWnd クラス
階層図

表示: