Dela via


CRgn-klass

Kapslar in en GDI-region (Windows Graphics Device Interface).

Syntax

class CRgn : public CGdiObject

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
CRgn::CRgn Konstruerar ett CRgn objekt.

Offentliga metoder

Namn Beskrivning
CRgn::CombineRgn Anger ett CRgn objekt så att det motsvarar union av två angivna CRgn objekt.
CRgn::CopyRgn Anger ett CRgn objekt så att det är en kopia av ett angivet CRgn objekt.
CRgn::CreateEllipticRgn Initierar ett CRgn objekt med en elliptisk region.
CRgn::CreateEllipticRgnIndirect Initierar ett CRgn objekt med en elliptisk region som definieras av en RECT-struktur .
CRgn::CreateFromData Skapar en region från den angivna regionen och transformeringsdata.
CRgn::CreateFromPath Skapar en region från sökvägen som har valts i den angivna enhetskontexten.
CRgn::CreatePolygonRgn Initierar ett CRgn objekt med en polygonal region. Systemet stänger polygonen automatiskt, om det behövs, genom att rita en linje från det sista hörnet till det första.
CRgn::CreatePolyPolygonRgn Initierar ett CRgn objekt med en region som består av en serie stängda polygoner. Polygonerna kan vara åtskilda eller överlappa varandra.
CRgn::CreateRectRgn Initierar ett CRgn objekt med en rektangulär region.
CRgn::CreateRectRgnIndirect Initierar ett CRgn objekt med en rektangulär region som definieras av en REKT-struktur .
CRgn::CreateRoundRectRgn Initierar ett CRgn objekt med en rektangulär region med rundade hörn.
CRgn::EqualRgn Kontrollerar två CRgn objekt för att avgöra om de är likvärdiga.
CRgn::FromHandle Returnerar en pekare till ett CRgn objekt när ett handtag ges till en Windows-region.
CRgn::GetRegionData Fyller den angivna bufferten med data som beskriver den angivna regionen.
CRgn::GetRgnBox Hämtar koordinaterna för avgränsningsrektangeln för ett CRgn objekt.
CRgn::OffsetRgn Flyttar ett CRgn objekt efter angivna förskjutningar.
CRgn::P tInRegion Avgör om en angiven punkt finns i regionen.
CRgn::RectInRegion Avgör om någon del av en angiven rektangel ligger inom regionens gränser.
CRgn::SetRectRgn Anger objektet CRgn till den angivna rektangulära regionen.

Offentliga operatörer

Namn Beskrivning
CRgn::operator HRGN Returnerar Windows-referensen CRgn som finns i objektet.

Anmärkningar

En region är ett elliptiskt eller polygonalt område i ett fönster. Om du vill använda regioner använder du medlemsfunktionerna i klassen CRgn med urklippsfunktionerna definierade som medlemmar i klassen CDC.

Medlemsfunktionerna CRgn för att skapa, ändra och hämta information om regionobjektet som de anropas för.

Mer information om hur du använder finns CRgni Grafiska objekt.

Arvshierarki

CObject

CGdiObject

CRgn

Kravspecifikation

rubrik: afxwin.h

CRgn::CombineRgn

Skapar en ny GDI-region genom att kombinera två befintliga regioner.

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

Parameterar

pRgn1
Identifierar en befintlig region.

pRgn2
Identifierar en befintlig region.

nCombineMode
Anger vilken åtgärd som ska utföras när de två källregionerna kombineras. Det kan vara något av följande värden:

  • RGN_AND Använder överlappande områden i båda regionerna (skärningspunkten).

  • RGN_COPY Skapar en kopia av region 1 (identifieras av pRgn1).

  • RGN_DIFF Skapar en region som består av områdena i region 1 (identifieras av pRgn1) som inte ingår i region 2 (identifieras av pRgn2).

  • RGN_OR Kombinerar båda regionerna i sin helhet (union).

  • RGN_XOR Kombinerar båda regionerna men tar bort överlappande områden.

Returvärde

Anger typen av den resulterande regionen. Det kan vara något av följande värden:

  • COMPLEXREGION Den nya regionen har överlappande kantlinjer.

  • FEL Ingen ny region har skapats.

  • NULLREGION Ny region är tom.

  • SIMPLEREGION Ny region har inga överlappande kantlinjer.

Anmärkningar

Regionerna kombineras enligt angiven av nCombineMode.

De två angivna regionerna kombineras och det resulterande regionhandtaget CRgn lagras i objektet. Den region som lagras i CRgn objektet ersätts därför av den kombinerade regionen.

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

Använd CopyRgn för att kopiera en region till en annan region.

Exempel

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

Kopierar regionen som definieras av pRgnSrc till objektet CRgn .

int CopyRgn(CRgn* pRgnSrc);

Parameterar

pRgnSrc
Identifierar en befintlig region.

Returvärde

Anger typen av den resulterande regionen. Det kan vara något av följande värden:

  • COMPLEXREGION Den nya regionen har överlappande kantlinjer.

  • FEL Ingen ny region har skapats.

  • NULLREGION Ny region är tom.

  • SIMPLEREGION Ny region har inga överlappande kantlinjer.

Anmärkningar

Den nya regionen ersätter den region som tidigare lagrades i CRgn objektet. Den här funktionen är ett specialfall för funktionen CombineRgn-medlem .

Exempel

Se exemplet för CRgn::CreateEllipticRgn.

CRgn::CreateEllipticRgn

Skapar en elliptisk region.

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

Parameterar

x1
Anger den logiska x-koordinaten i det övre vänstra hörnet i ellipsens avgränsningsrektangel.

y1
Anger den logiska y-koordinaten i det övre vänstra hörnet i ellipsens avgränsningsrektangel.

x2
Anger den logiska x-koordinaten i det nedre högra hörnet i ellipsens avgränsningsrektangel.

y2
Anger den logiska y-koordinaten för det nedre högra hörnet i ellipsens avgränsningsrektangel.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Regionen definieras av den avgränsningsrektangel som anges av x1, y1, x2 och y2. Regionen lagras i objektet CRgn .

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När det har slutförts med en region som skapats med CreateEllipticRgn funktionen bör ett program välja regionen från enhetskontexten DeleteObject och använda funktionen för att ta bort den.

Exempel

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

Skapar en elliptisk region.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Parameterar

lpRect
Pekar på en RECT struktur eller ett CRect objekt som innehåller de logiska koordinaterna för de övre vänstra och nedre högra hörnen i ellipsens avgränsningsrektangel.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Regionen definieras av den struktur eller det objekt som lpRect pekar på och lagras i CRgn objektet.

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När det har slutförts med en region som skapats med CreateEllipticRgnIndirect funktionen bör ett program välja regionen från enhetskontexten DeleteObject och använda funktionen för att ta bort den.

Exempel

Se exemplet för CRgn::CreateRectRgnIndirect.

CRgn::CreateFromData

Skapar en region från den angivna regionen och transformeringsdata.

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

Parameterar

lpXForm
Pekar på en XFORM-datastruktur som definierar den transformering som ska utföras i regionen. Om den här pekaren är NULL används identitetstransformeringen.

nCount
Anger antalet byte som pRgnData pekar på.

pRgnData
Pekar på en RGNDATA-datastruktur som innehåller regiondata.

Returvärde

Nonzero om funktionen lyckas; annars 0.

Anmärkningar

Ett program kan hämta data för en region genom att anropa CRgn::GetRegionData funktionen.

CRgn::CreateFromPath

Skapar en region från sökvägen som har valts i den angivna enhetskontexten.

BOOL CreateFromPath(CDC* pDC);

Parameterar

pDC-
Identifierar en enhetskontext som innehåller en stängd sökväg.

Returvärde

Nonzero om funktionen lyckas; annars 0.

Anmärkningar

Enhetskontexten som identifieras av pDC-parametern måste innehålla en stängd sökväg. När CreateFromPath en sökväg har konverterats till en region tar Windows bort den stängda sökvägen från enhetskontexten.

CRgn::CreatePolygonRgn

Skapar en polygonal region.

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

Parameterar

lpPoints
Pekar på en matris med POINT strukturer eller en matris med CPoint objekt. Varje struktur anger x-koordinaten och y-koordinaten för ett hörn av polygonen. Strukturen POINT har följande formulär:

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

nCount
Anger antalet POINT strukturer eller CPoint objekt i matrisen som lpPoints pekar på.

nMode
Anger ifyllningsläget för regionen. Den här parametern kan vara antingen ALTERNATE eller WINDING.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Systemet stänger polygonen automatiskt, om det behövs, genom att rita en linje från det sista hörnet till det första. Den resulterande regionen lagras i objektet CRgn .

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När polygonfyllningsläget är ALTERNATE fyller systemet området mellan udda och jämnt numrerade polygonsidor på varje skanningslinje. Systemet fyller alltså området mellan den första och andra sidan, mellan den tredje och fjärde sidan och så vidare.

När polygonfyllningsläget är WINDING använder systemet den riktning i vilken en figur ritades för att avgöra om ett område ska fyllas. Varje linjesegment i en polygon ritas medsols eller motsols. När en imaginär linje som dras från ett omslutet område till utsidan av en figur passerar genom ett medurs linjesegment ökas antalet. När linjen passerar genom ett motsolslinjesegment minskas antalet. Området fylls om antalet inte är noll när linjen når figurens utsida.

När ett program har slutförts med en region som skapats med CreatePolygonRgn funktionen bör det välja regionen från enhetskontexten DeleteObject och använda funktionen för att ta bort den.

Exempel

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

Skapar en region som består av en serie stängda polygoner.

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

Parameterar

lpPoints
Pekar på en matris med POINT strukturer eller en matris med CPoint objekt som definierar polygonernas hörn. Varje polygon måste stängas uttryckligen eftersom systemet inte stänger dem automatiskt. Polygonerna anges i följd. Strukturen POINT har följande formulär:

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

lpPolyCounts
Pekar på en matris med heltal. Det första heltalet anger antalet hörn i den första polygonen i lpPoints-matrisen , det andra heltalet anger antalet hörn i den andra polygonen och så vidare.

nCount
Anger det totala antalet heltal i matrisen lpPolyCounts .

nPolyFillMode
Anger polygonfyllningsläget. Det här värdet kan vara antingen ALTERNATE eller WINDING.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Den resulterande regionen lagras i objektet CRgn .

Polygonerna kan vara åtskilda eller överlappa varandra.

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När polygonfyllningsläget är ALTERNATE fyller systemet området mellan udda och jämnt numrerade polygonsidor på varje skanningslinje. Systemet fyller alltså området mellan den första och andra sidan, mellan den tredje och fjärde sidan och så vidare.

När polygonfyllningsläget är WINDING använder systemet den riktning i vilken en figur ritades för att avgöra om ett område ska fyllas. Varje linjesegment i en polygon ritas medsols eller motsols. När en imaginär linje som dras från ett omslutet område till utsidan av en figur passerar genom ett medurs linjesegment ökas antalet. När linjen passerar genom ett motsolslinjesegment minskas antalet. Området fylls om antalet inte är noll när linjen når figurens utsida.

När ett program har slutförts med en region som skapats med CreatePolyPolygonRgn funktionen bör det välja regionen från enhetskontexten och använda funktionen CGDIObject::D eleteObject-medlem för att ta bort den.

CRgn::CreateRectRgn

Skapar en rektangulär region som lagras i objektet CRgn .

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

Parameterar

x1
Anger den logiska x-koordinaten i det övre vänstra hörnet i regionen.

y1
Anger den logiska y-koordinaten i det övre vänstra hörnet i regionen.

x2
Anger den logiska x-koordinaten i det nedre högra hörnet i regionen.

y2
Anger den logiska y-koordinaten i det nedre högra hörnet i regionen.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När det har slutförts med en region som skapats av CreateRectRgnbör ett program använda medlemsfunktionen CGDIObject::D eleteObject för att ta bort regionen.

Exempel

CRgn   rgn;

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

Ett annat exempel finns i CRgn::CombineRgn.

CRgn::CreateRectRgnIndirect

Skapar en rektangulär region som lagras i objektet CRgn .

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Parameterar

lpRect
Pekar på en struktur eller RECT ett CRect objekt som innehåller de logiska koordinaterna i regionens övre vänstra och nedre högra hörn. Strukturen RECT har följande formulär:

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

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När det har slutförts med en region som skapats av CreateRectRgnIndirectbör ett program använda medlemsfunktionen CGDIObject::D eleteObject för att ta bort regionen.

Exempel

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

Skapar en rektangulär region med rundade hörn som lagras i CRgn objektet.

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

Parameterar

x1
Anger den logiska x-koordinaten i det övre vänstra hörnet i regionen.

y1
Anger den logiska y-koordinaten i det övre vänstra hörnet i regionen.

x2
Anger den logiska x-koordinaten i det nedre högra hörnet i regionen.

y2
Anger den logiska y-koordinaten i det nedre högra hörnet i regionen.

x3
Anger bredden på den ellips som används för att skapa de rundade hörnen.

y3
Anger höjden på den ellips som används för att skapa de rundade hörnen.

Returvärde

Nonzero om åtgärden lyckades; annars 0.

Anmärkningar

Storleken på en region är begränsad till 32 767 av 32 767 logiska enheter eller 64 K minne, beroende på vilket som är mindre.

När ett program har slutförts med en region som skapats med CreateRoundRectRgn funktionen bör det välja regionen från enhetskontexten och använda funktionen CGDIObject::D eleteObject-medlem för att ta bort den.

Exempel

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

Konstruerar ett CRgn objekt.

CRgn();

Anmärkningar

Datamedlemmen m_hObject innehåller inte en giltig Windows GDI-region förrän objektet initieras med en eller flera av de andra CRgn medlemsfunktionerna.

Exempel

Se exemplet för CRgn::CreateRoundRectRgn.

CRgn::EqualRgn

Avgör om den angivna regionen motsvarar den region som lagras i CRgn objektet.

BOOL EqualRgn(CRgn* pRgn) const;

Parameterar

pRgn
Identifierar en region.

Returvärde

Nonzero om de två regionerna är likvärdiga; annars 0.

Exempel

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

Returnerar en pekare till ett CRgn objekt när ett handtag ges till en Windows-region.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Parameterar

hRgn
Anger en referens till en Windows-region.

Returvärde

En pekare till ett CRgn objekt. Om funktionen inte lyckades är returvärdet NULL.

Anmärkningar

Om ett CRgn objekt inte redan är kopplat till handtaget skapas och kopplas ett tillfälligt CRgn objekt. Det här temporära CRgn objektet är endast giltigt till nästa gång programmet har inaktiv tid i händelseloopen, då alla tillfälliga grafiska objekt tas bort. Ett annat sätt att säga detta är att det tillfälliga objektet endast är giltigt under bearbetningen av ett fönstermeddelande.

CRgn::GetRegionData

Fyller den angivna bufferten med data som beskriver regionen.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Parameterar

lpRgnData
Pekar på en RGNDATA-datastruktur som tar emot informationen. Om den här parametern är NULL innehåller returvärdet det antal byte som behövs för regiondata.

nCount
Anger storleken i byte för lpRgnData-bufferten .

Returvärde

Om funktionen lyckas och nCount anger ett tillräckligt antal byte är returvärdet alltid nCount. Om funktionen misslyckas, eller om nCount anger mindre än tillräckligt antal byte, är returvärdet 0 (fel).

Anmärkningar

Dessa data innehåller dimensionerna för de rektanglar som utgör regionen. Den här funktionen används tillsammans med CRgn::CreateFromData funktionen.

CRgn::GetRgnBox

Hämtar koordinaterna för objektets avgränsningsrektangel CRgn .

int GetRgnBox(LPRECT lpRect) const;

Parameterar

lpRect
Pekar på en struktur eller RECT ett CRect objekt för att ta emot koordinaterna för avgränsningsrektangeln. Strukturen RECT har följande formulär:

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

Returvärde

Anger regionens typ. Det kan vara något av följande värden:

  • COMPLEXREGION Region har överlappande kantlinjer.

  • NULLREGION-regionen är tom.

  • ERROR-objektet CRgn anger inte en giltig region.

  • SIMPLEREGION-regionen har inga överlappande kantlinjer.

Exempel

Se exemplet för CRgn::CreatePolygonRgn.

CRgn::OffsetRgn

Flyttar den region som lagras i CRgn objektet med de angivna förskjutningarna.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Parameterar

x
Anger antalet enheter som ska flyttas åt vänster eller höger.

y
Anger antalet enheter som ska flyttas uppåt eller nedåt.

punkt
X-koordinaten för punkt anger antalet enheter som ska flyttas åt vänster eller höger. Punktkoordinaten anger hur många enheter som ska flyttas uppåt eller nedåt. Punktparametern kan vara antingen en POINT struktur eller ett CPoint objekt.

Returvärde

Den nya regionens typ. Det kan vara något av följande värden:

  • COMPLEXREGION Region har överlappande kantlinjer.

  • Handtag för FELregion är inte giltigt.

  • NULLREGION-regionen är tom.

  • SIMPLEREGION-regionen har inga överlappande kantlinjer.

Anmärkningar

Funktionen flyttar regionen x enheter längs x-axeln och y enheter längs y-axeln.

Koordinatvärdena för en region måste vara mindre än eller lika med 32 767 och större än eller lika med -32 768. Parametrarna x och y måste väljas noggrant för att förhindra ogiltiga regionkoordinater.

Exempel

Se exemplet för CRgn::CreateEllipticRgn.

CRgn::operator HRGN

Använd den här operatorn för att hämta det anslutna Windows GDI-handtaget för CRgn objektet.

operator HRGN() const;

Returvärde

Om det lyckas, ett handtag till Windows GDI-objektet som representeras av CRgn objektet, annars NULL.

Anmärkningar

Den här operatorn är en gjutningsoperator som stöder direkt användning av ett HRGN-objekt.

Mer information om hur du använder grafiska objekt finns i artikeln Grafiska objekt i Windows SDK.

CRgn::P tInRegion

Kontrollerar om punkten som anges av x och y finns i den region som lagras i CRgn objektet.

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Parameterar

x
Anger den logiska x-koordinaten för den punkt som ska testas.

y
Anger den logiska y-koordinaten för den punkt som ska testas.

punkt
X- och y-koordinaterna för punkt anger x- och y-koordinaterna för punkten för att testa värdet för. Punktparametern kan antingen vara en POINT struktur eller ett CPoint objekt.

Returvärde

Nonzero om punkten är i regionen; annars 0.

CRgn::RectInRegion

Avgör om någon del av rektangeln som anges av lpRect ligger inom gränserna för den region som lagras i CRgn objektet.

BOOL RectInRegion(LPCRECT lpRect) const;

Parameterar

lpRect
Pekar på en struktur eller RECT ett CRect objekt. Strukturen RECT har följande formulär:

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

Returvärde

Nonzero om någon del av den angivna rektangeln ligger inom regionens gränser. annars 0.

CRgn::SetRectRgn

Skapar en rektangulär region.

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

void SetRectRgn(LPCRECT lpRect);

Parameterar

x1
Anger x-koordinaten för det övre vänstra hörnet i den rektangulära regionen.

y1
Anger y-koordinaten för det övre vänstra hörnet i den rektangulära regionen.

x2
Anger x-koordinaten för det nedre högra hörnet i den rektangulära regionen.

y2
Anger y-koordinaten för det nedre högra hörnet i den rektangulära regionen.

lpRect
Anger den rektangulära regionen. Kan vara antingen en pekare till en RECT struktur eller ett CRect objekt.

Anmärkningar

Till skillnad från CreateRectRgn allokerar den dock inte något extra minne från det lokala Windows-programmets heap. I stället används det allokerade utrymmet för den region som lagras i CRgn objektet. Det innebär att CRgn objektet redan måste ha initierats med en giltig Windows-region innan det anropas SetRectRgn. Punkterna som anges av x1, y1, x2 och y2 anger den minsta storleken på det allokerade utrymmet.

Använd den här funktionen i stället för CreateRectRgn medlemsfunktionen för att undvika anrop till den lokala minneshanteraren.

Se även

CWnd-klass
hierarkidiagram