다음을 통해 공유


CRgn 클래스

Windows GDI(그래픽 디바이스 인터페이스) 영역을 캡슐화합니다.

구문

class CRgn : public CGdiObject

멤버

공용 생성자

속성 설명
CRgn::CRgn CRgn 개체를 생성합니다.

공용 메서드

이름 설명
CRgn::CombineRgn CRgn 지정된 두 개체의 합합과 같도록 개체를 CRgn 설정합니다.
CRgn::CopyRgn 지정된 CRgn 개체의 CRgn 복사본이 되도록 개체를 설정합니다.
CRgn::CreateEllipticRgn 타원형 영역을 사용하여 CRgn 개체를 초기화합니다.
CRgn::CreateEllipticRgnIndirect RECT 구조체로 정의 된 타원 영역을 사용 하 여 CRgn개체를 초기화합니다.
CRgn::CreateFromData 지정된 지역 및 변환 데이터에서 지역을 만듭니다.
CRgn::CreateFromPath 선택한 경로에서 지정된 디바이스 컨텍스트로 영역을 만듭니다.
CRgn::CreatePolygonRgn 다각형 영역을 사용하여 CRgn 개체를 초기화합니다. 시스템은 필요한 경우 마지막 꼭짓점에서 첫 번째 꼭짓점까지 선을 그려 다각형을 자동으로 닫습니다.
CRgn::CreatePolyPolygonRgn 일련의 닫힌 다각형으로 구성된 영역을 사용하여 개체를 초기화 CRgn 합니다. 다각형은 분리되거나 겹칠 수 있습니다.
CRgn::CreateRectRgn 사각형 영역을 사용하여 CRgn 개체를 초기화합니다.
CRgn::CreateRectRgnIndirect RECT 구조에서 정의된 사각형 영역을 사용하여 CRgn 개체를 초기화합니다.
CRgn::CreateRoundRectRgn 모서리가 CRgn 둥근 사각형 영역을 사용하여 개체를 초기화합니다.
CRgn::EqualRgn CRgn 개체를 확인하여 동일한지 여부를 확인합니다.
CRgn::FromHandle Windows 지역에 대한 핸들이 CRgn 제공되면 개체에 대한 포인터를 반환합니다.
CRgn::GetRegionData 지정된 버퍼를 지정된 지역을 설명하는 데이터로 채웁니다.
CRgn::GetRgnBox 개체의 경계 사각형 CRgn 의 좌표를 검색합니다.
CRgn::OffsetRgn 개체를 CRgn 지정된 오프셋으로 이동합니다.
CRgn::PtInRegion 지정된 지점이 지역에 있는지 여부를 확인합니다.
CRgn::RectInRegion 지정된 사각형의 일부가 영역 경계 내에 있는지 여부를 확인합니다.
CRgn::SetRectRgn 개체를 CRgn 지정된 사각형 영역으로 설정합니다.

Public 연산자

속성 설명
CRgn::operator HRGN 개체에 포함된 Windows 핸들을 CRgn 반환합니다.

설명

영역은 창 내의 타원형 또는 다각형 영역입니다. 영역을 사용하려면 클래스 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 지역 2의 일부가 아닌 지역 1(pRgn1식별됨)의 영역으로 구성된 영역을 만듭니다(pRgn2식별됨).

  • RGN_OR 전체(공용 구조체)에서 두 지역을 결합합니다.

  • RGN_XOR 두 지역을 결합하지만 겹치는 영역을 제거합니다.

Return Value

결과 영역의 형식을 지정합니다. 다음 값 중 하나일 수 있습니다.

  • COMPLEXREGION 새 지역에는 테두리가 겹칩니다.

  • 오류 새 지역이 만들어지지 않았습니다.

  • NULLREGION 새 지역이 비어 있습니다.

  • SIMPLEREGION 새 지역에는 겹치는 테두리가 없습니다.

설명

영역은 nCombineMode에서 지정한 대로 결합됩니다.

지정된 두 영역이 결합되고 결과 영역 핸들이 개체에 CRgn 저장됩니다. 따라서 개체에 CRgn 저장된 영역은 결합된 영역으로 대체됩니다.

영역의 크기는 32,767 x 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
기존 지역을 식별합니다.

Return Value

결과 영역의 형식을 지정합니다. 다음 값 중 하나일 수 있습니다.

  • 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 좌표를 지정합니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

지역은 x1, y1, x2 및 y2로 지정된 경계 사각형에 의해 정의됩니다. 영역은 개체에 CRgn 저장됩니다.

영역의 크기는 32,767 x 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 개체를 가리킵니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

영역은 lpRect에서 가리키는 구조 또는 개체에 의해 정의되며 개체에 CRgn 저장됩니다.

영역의 크기는 32,767 x 32,767 논리 단위 또는 64K 메모리 중 더 작은 값으로 제한됩니다.

함수로 CreateEllipticRgnIndirect 만든 지역 사용을 마치면 애플리케이션이 디바이스 컨텍스트에서 영역을 선택하고 함수를 DeleteObject 사용하여 제거해야 합니다.

예시

CRgn::CreateRectRgnIndirect에 대한 예제를 참조하세요.

CRgn::CreateFromData

지정된 지역 및 변환 데이터에서 지역을 만듭니다.

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

매개 변수

lpXForm
지역에서 수행할 변환을 정의하는 XFORMata 구조를 가리킵니다. 이 포인터가 NULL이면 ID 변환이 사용됩니다.

nCount
pRgnData에서 가리키는 바이트 수를 지정합니다.

pRgnData
지역 데이터를 포함하는 RGNDATA 데이터 구조를 가리킵니다.

Return Value

함수가 성공하면 0이 아니고 그렇지 않으면 0입니다.

설명

애플리케이션은 함수를 호출하여 지역에 대한 데이터를 검색할 CRgn::GetRegionData 수 있습니다.

CRgn::CreateFromPath

선택한 경로에서 지정된 디바이스 컨텍스트로 영역을 만듭니다.

BOOL CreateFromPath(CDC* pDC);

매개 변수

pDC
닫힌 경로를 포함하는 디바이스 컨텍스트를 식별합니다.

Return Value

함수가 성공하면 0이 아니고 그렇지 않으면 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
lpPoint가 가리키는 배열의 POINT 구조체 또는 CPoint 개체 수를 지정합니다.

nMode
영역의 채우기 모드를 지정합니다. 이 매개 변수는 ALTERNATE 또는 WINDING일 수 있습니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

시스템은 필요한 경우 마지막 꼭짓점에서 첫 번째 꼭짓점까지 선을 그려 다각형을 자동으로 닫습니다. 결과 영역은 개체에 CRgn 저장됩니다.

영역의 크기는 32,767 x 32,767 논리 단위 또는 64K 메모리 중 더 작은 값으로 제한됩니다.

다각형 채우기 모드가 ALTERNATE이면 시스템은 각 스캔 줄에서 홀수 번호와 짝수 다각형 면 사이의 영역을 채웁니다. 즉, 시스템은 첫 번째와 두 번째 면 사이의 영역, 세 번째와 네 번째 측면 사이의 영역을 채웁니다.

다각형 채우기 모드가 권선일 때 시스템은 그림을 그린 방향을 사용하여 영역을 채울지 여부를 결정합니다. 다각형의 각 선 세그먼트는 시계 방향 또는 시계 반대 방향으로 그려집니다. 밀폐된 영역에서 그림의 바깥쪽으로 그린 가상 선이 시계 방향 선 세그먼트를 통과할 때마다 개수가 증가합니다. 줄이 시계 반대 방향 선 세그먼트를 통과하면 개수가 감소합니다. 그림 바깥쪽에 줄이 도달하면 수가 0이 아닌 경우 영역이 채워집니다.

애플리케이션이 함수를 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일 수 있습니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

결과 영역은 개체에 CRgn 저장됩니다.

다각형은 분리되거나 겹칠 수 있습니다.

영역의 크기는 32,767 x 32,767 논리 단위 또는 64K 메모리 중 더 작은 값으로 제한됩니다.

다각형 채우기 모드가 ALTERNATE이면 시스템은 각 스캔 줄에서 홀수 번호와 짝수 다각형 면 사이의 영역을 채웁니다. 즉, 시스템은 첫 번째와 두 번째 면 사이의 영역, 세 번째와 네 번째 측면 사이의 영역을 채웁니다.

다각형 채우기 모드가 권선일 때 시스템은 그림을 그린 방향을 사용하여 영역을 채울지 여부를 결정합니다. 다각형의 각 선 세그먼트는 시계 방향 또는 시계 반대 방향으로 그려집니다. 밀폐된 영역에서 그림의 바깥쪽으로 그린 가상 선이 시계 방향 선 세그먼트를 통과할 때마다 개수가 증가합니다. 줄이 시계 반대 방향 선 세그먼트를 통과하면 개수가 감소합니다. 그림 바깥쪽에 줄이 도달하면 수가 0이 아닌 경우 영역이 채워집니다.

애플리케이션이 함수로 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 좌표를 지정합니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

영역의 크기는 32,767 x 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;

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

영역의 크기는 32,767 x 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
둥근 모서리를 만드는 데 사용되는 줄임표의 높이를 지정합니다.

Return Value

작업이 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

영역의 크기는 32,767 x 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 하나 이상의 다른 CRgn 멤버 함수를 사용하여 개체를 초기화할 때까지 데이터 멤버는 유효한 Windows GDI 지역을 포함하지 않습니다.

예시

CRgn::CreateRoundRectRgn에 대한 예제를 참조하세요.

CRgn::EqualRgn

지정된 지역이 개체에 저장된 CRgn 지역과 같은지 여부를 확인합니다.

BOOL EqualRgn(CRgn* pRgn) const;

매개 변수

pRgn
지역을 식별합니다.

Return Value

두 지역이 동일한 경우 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::FromHandle

Windows 지역에 대한 핸들이 CRgn 제공되면 개체에 대한 포인터를 반환합니다.

static CRgn* PASCAL FromHandle(HRGN hRgn);

매개 변수

hRgn
Windows 지역에 대한 핸들을 지정합니다.

Return Value

CRgn 개체에 대한 포인터입니다. 함수가 성공하지 못한 경우 반환 값은 NULL입니다.

설명

개체가 CRgn 핸들에 아직 연결되지 않은 경우 임시 CRgn 개체가 만들어지고 연결됩니다. 이 임시 CRgn 개체는 다음에 애플리케이션이 이벤트 루프에서 유휴 시간을 가지며, 이때 모든 임시 그래픽 개체가 삭제될 때까지만 유효합니다. 또 다른 방법은 임시 개체가 하나의 창 메시지를 처리하는 동안에만 유효하다는 것입니다.

CRgn::GetRegionData

지정된 버퍼를 지역을 설명하는 데이터로 채웁니다.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

매개 변수

lpRgnData
정보를 받는 RGNDATA 데이터 구조를 가리킵니다. 이 매개 변수가 NULL인 경우 반환 값에는 지역 데이터에 필요한 바이트 수가 포함됩니다.

nCount
lpRgnData 버퍼의 크기(바이트)를 지정합니다.

Return Value

함수가 성공하고 nCount 가 적절한 바이트 수를 지정하는 경우 반환 값은 항상 nCount입니다. 함수가 실패하거나 nCount가 적절한 바이트 수보다 적게 지정하는 경우 반환 값은 0(오류)입니다.

설명

이 데이터에는 지역을 구성하는 사각형의 크기가 포함됩니다. 이 함수는 함수와 함께 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;

Return Value

지역의 형식을 지정합니다. 다음 값 중 하나일 수 있습니다.

  • 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 CPoint 수 있습니다.

Return Value

새 지역의 형식입니다. 다음 값 중 하나일 수 있습니다.

  • COMPLEXREGION 영역에는 겹치는 테두리가 있습니다.

  • 오류 지역 핸들이 잘못되었습니다.

  • NULLREGION 지역이 비어 있습니다.

  • SIMPLEREGION 지역에는 겹치는 테두리가 없습니다.

설명

이 함수는 x축을 따라 영역 x 단위를 이동하고 y 축을 따라 y 단위를 이동합니다.

영역의 좌표 값은 32,767보다 작거나 같아야 하며 -32,768보다 크거나 같아야 합니다. 잘못된 지역 좌표를 방지하려면 xy 매개 변수를 신중하게 선택해야 합니다.

예시

CRgn::CreateEllipticRgn에 대한 예제를 참조하세요.

CRgn::operator HRGN

이 연산자를 사용하여 개체의 연결된 Windows GDI 핸들을 가져옵니다 CRgn .

operator HRGN() const;

Return Value

성공하면 개체가 나타내는 Windows GDI 개체에 대한 핸들이 CRgn 고, 그렇지 않으면 NULL입니다.

설명

이 연산자는 HRGN 개체의 직접 사용을 지원하는 캐스팅 연산자입니다.

그래픽 개체 사용에 대한 자세한 내용은 Windows SDK의 그래픽 개체 문서를 참조하세요.

CRgn::PtInRegion

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 CPoint 수 있습니다.

Return Value

점이 지역에 있으면 0이 아닌 값입니다. 그렇지 않으면 0입니다.

CRgn::RectInRegion

lpRect로 지정된 사각형의 일부가 개체에 저장된 CRgn 영역의 경계 내에 있는지 여부를 확인합니다.

BOOL RectInRegion(LPCRECT lpRect) const;

매개 변수

lpRect
구조체 또는 CRect 개체를 RECT 가리킵니다. 구조체 RECT 의 형식은 다음과 같습니다.

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

Return Value

지정된 사각형의 일부가 영역 경계 내에 있으면 0이 아닌 경우 그렇지 않으면 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
사각형 영역을 지정합니다. 구조체 또는 CRect 개체에 대한 RECT 포인터일 수 있습니다.

설명

그러나 CreateRectRgn과 달리 로컬 Windows 애플리케이션 힙에서 추가 메모리를 할당하지는 않습니다. 대신 개체에 저장된 영역에 할당된 CRgn 공간을 사용합니다. 즉 CRgn , 호출 SetRectRgn하기 전에 개체가 유효한 Windows 지역으로 이미 초기화되어 있어야 합니다. x1, y1, x2 및 y2에서 지정한 포인트는 할당된 공간의 최소 크기를 지정합니다.

로컬 메모리 관리자에 대한 호출을 CreateRectRgn 방지하려면 멤버 함수 대신 이 함수를 사용합니다.

참고 항목

CWnd 클래스
계층 구조 차트