CRgn, classe

Encapsule une région GDI (Graphics Device Interface) Windows.

Syntaxe

class CRgn : public CGdiObject

Membres

Constructeurs publics

Nom Description
CRgn ::CRgn Construit un objet CRgn.

Méthodes publiques

Nom Description
CRgn ::CombineRgn Définit un CRgn objet afin qu’il soit équivalent à l’union de deux objets spécifiés CRgn .
CRgn ::CopyRgn Définit un CRgn objet afin qu’il soit une copie d’un objet spécifié CRgn .
CRgn ::CreateEllipticRgn Initialise un CRgn objet avec une région elliptique.
CRgn ::CreateEllipticRgnIndirect Initialise un CRgn objet avec une région elliptique définie par une structure RECT .
CRgn ::CreateFromData Crée une région à partir de la région donnée et des données de transformation.
CRgn ::CreateFromPath Crée une région à partir du chemin d’accès sélectionné dans le contexte d’appareil donné.
CRgn ::CreatePolygonRgn Initialise un CRgn objet avec une région polygonale. Le système ferme automatiquement le polygone, si nécessaire, en dessinant une ligne du dernier sommet au premier.
CRgn ::CreatePolyPolygonRgn Initialise un CRgn objet avec une région composée d’une série de polygones fermés. Les polygones peuvent être disjoints, ou ils peuvent se chevaucher.
CRgn ::CreateRectRgn Initialise un CRgn objet avec une région rectangulaire.
CRgn ::CreateRectRgnIndirect Initialise un CRgn objet avec une région rectangulaire définie par une trêve RECT.
CRgn ::CreateRoundRectRgn Initialise un CRgn objet avec une région rectangulaire avec des angles arrondis.
CRgn ::EqualRgn Vérifie deux CRgn objets pour déterminer s’ils sont équivalents.
CRgn ::FromHandle Retourne un pointeur vers un CRgn objet lorsqu’un handle est donné à une région Windows.
CRgn ::GetRegionData Remplit la mémoire tampon spécifiée avec des données décrivant la région donnée.
CRgn ::GetRgnBox Récupère les coordonnées du rectangle englobant d’un CRgn objet.
CRgn ::OffsetRgn Déplace un CRgn objet par les décalages spécifiés.
CRgn ::P tInRegion Détermine si un point spécifié se trouve dans la région.
CRgn ::RectInRegion Détermine si une partie d’un rectangle spécifié se trouve dans les limites de la région.
CRgn ::SetRectRgn Définit l’objet CRgn sur la région rectangulaire spécifiée.

Opérateurs publics

Nom Description
CRgn ::operator HRGN Retourne le handle Windows contenu dans l’objet CRgn .

Notes

Une région est une zone elliptique ou polygonale dans une fenêtre. Pour utiliser des régions, vous utilisez les fonctions membres de classe CRgn avec les fonctions de découpage définies en tant que membres de la classe CDC.

Fonctions membres de la création, de la modification et de CRgn la récupération d’informations sur l’objet de région pour lequel elles sont appelées.

Pour plus d’informations sur l’utilisation CRgn, consultez Objets graphiques.

Hiérarchie d'héritage

CObject

CGdiObject

CRgn

Spécifications

En-tête : afxwin.h

CRgn ::CombineRgn

Crée une région GDI en combinant deux régions existantes.

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

Paramètres

pRgn1
Identifie une région existante.

pRgn2
Identifie une région existante.

nCombineMode
Spécifie l’opération à effectuer lors de la combinaison des deux régions sources. Il peut s’agir de l’une des valeurs suivantes :

  • RGN_AND Utilise des zones qui se chevauchent dans les deux régions (intersection).

  • RGN_COPY Crée une copie de la région 1 (identifiée par pRgn1).

  • RGN_DIFF Crée une région composée des zones de la région 1 (identifiées par pRgn1) qui ne font pas partie de la région 2 (identifiées par pRgn2).

  • RGN_OR Combine les deux régions dans leur intégralité (union).

  • RGN_XOR Combine les deux régions, mais supprime les zones qui se chevauchent.

Valeur de retour

Spécifie le type de la région résultante. Ce peut être l’une des valeurs suivantes :

  • COMPLEXREGION New region a des bordures qui se chevauchent.

  • ERREUR Aucune nouvelle région n’a été créée.

  • NULLREGION New region is empty.

  • SIMPLEREGION New region n’a pas de bordures qui se chevauchent.

Notes

Les régions sont combinées comme spécifié par nCombineMode.

Les deux régions spécifiées sont combinées et le handle de région résultant est stocké dans l’objet CRgn . Par conséquent, quelle que soit la région stockée dans l’objet CRgn , elle est remplacée par la région combinée.

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Utilisez CopyRgn pour simplement copier une région dans une autre région.

Exemple

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

Copie la région définie par pRgnSrc dans l’objet CRgn .

int CopyRgn(CRgn* pRgnSrc);

Paramètres

pRgnSrc
Identifie une région existante.

Valeur de retour

Spécifie le type de la région résultante. Ce peut être l’une des valeurs suivantes :

  • COMPLEXREGION New region a des bordures qui se chevauchent.

  • ERREUR Aucune nouvelle région n’a été créée.

  • NULLREGION New region is empty.

  • SIMPLEREGION New region n’a pas de bordures qui se chevauchent.

Notes

La nouvelle région remplace la région précédemment stockée dans l’objet CRgn . Cette fonction est un cas spécial de la fonction membre CombineRgn .

Exemple

Consultez l’exemple de CRgn ::CreateEllipticRgn.

CRgn ::CreateEllipticRgn

Crée une région elliptique.

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

Paramètres

x1
Spécifie la coordonnée x logique du coin supérieur gauche du rectangle englobant de l’ellipse.

y1
Spécifie la coordonnée y logique du coin supérieur gauche du rectangle englobant de l’ellipse.

x2
Spécifie la coordonnée x logique du coin inférieur droit du rectangle englobant de l’ellipse.

y2
Spécifie la coordonnée y logique du coin inférieur droit du rectangle englobant de l’ellipse.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La région est définie par le rectangle englobant spécifié par x1, y1, x2 et y2. La région est stockée dans l’objet CRgn .

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Une fois qu’elle a fini d’utiliser une région créée avec la CreateEllipticRgn fonction, une application doit sélectionner la région hors du contexte de l’appareil et utiliser la fonction pour la DeleteObject supprimer.

Exemple

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

Crée une région elliptique.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Paramètres

lpRect
Pointe vers une RECT structure ou un CRect objet qui contient les coordonnées logiques des coins supérieur gauche et inférieur droit du rectangle englobant de l’ellipse.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La région est définie par la structure ou l’objet pointé par lpRect et est stocké dans l’objet CRgn .

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Une fois qu’elle a fini d’utiliser une région créée avec la CreateEllipticRgnIndirect fonction, une application doit sélectionner la région hors du contexte de l’appareil et utiliser la fonction pour la DeleteObject supprimer.

Exemple

Consultez l’exemple de CRgn ::CreateRectRgnIndirect.

CRgn ::CreateFromData

Crée une région à partir de la région donnée et des données de transformation.

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

Paramètres

lpXForm
Pointe vers une structure ata XFORMqui définit la transformation à effectuer sur la région. Si ce pointeur a la valeur NULL, la transformation d’identité est utilisée.

nCount
Spécifie le nombre d’octets pointés par pRgnData.

pRgnData
Pointe vers une structure de données RGNDATA qui contient les données de région.

Valeur de retour

Une valeur différente de zéro si la fonction réussit ; sinon, 0.

Notes

Une application peut récupérer des données pour une région en appelant la CRgn::GetRegionData fonction.

CRgn ::CreateFromPath

Crée une région à partir du chemin d’accès sélectionné dans le contexte d’appareil donné.

BOOL CreateFromPath(CDC* pDC);

Paramètres

pDC
Identifie un contexte d’appareil qui contient un chemin fermé.

Valeur de retour

Une valeur différente de zéro si la fonction réussit ; sinon, 0.

Notes

Le contexte de l’appareil identifié par le paramètre pDC doit contenir un chemin fermé. Après CreateFromPath avoir converti un chemin d’accès en région, Windows ignore le chemin fermé à partir du contexte de l’appareil.

CRgn ::CreatePolygonRgn

Crée une région polygonale.

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

Paramètres

lpPoints
Pointe vers un tableau de POINT structures ou un tableau d’objets CPoint . Chaque structure spécifie la coordonnée x et la coordonnée y d’un sommet du polygone. La POINT structure a la forme suivante :

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

nCount
Spécifie le nombre de structures ou d’objets POINT dans le tableau pointé par lpPoints.CPoint

nMode
Spécifie le mode de remplissage de la région. Ce paramètre peut être ALTERNATE ou WINDING.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

Le système ferme automatiquement le polygone, si nécessaire, en dessinant une ligne du dernier sommet au premier. La région résultante est stockée dans l’objet CRgn .

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Lorsque le mode de remplissage de polygones est ALTERNATE, le système remplit la zone entre les côtés impairs et pairs des polygones sur chaque ligne d’analyse. Autrement dit, le système remplit la zone entre le premier et le deuxième côté, entre le troisième et le quatrième côté, et ainsi de suite.

Lorsque le mode de remplissage de polygones est WINDING, le système utilise la direction dans laquelle une figure a été dessinée pour déterminer s’il faut remplir une zone. Chaque segment de ligne d’un polygone est dessiné dans le sens des aiguilles d’une montre ou dans un sens inverse. Chaque fois qu’une ligne imaginaire dessinée d’une zone fermée à l’extérieur d’une figure passe par un segment de ligne au niveau des aiguilles d’une montre, un nombre est incrémenté. Lorsque la ligne passe par un segment de ligne dans le sens inverse, le nombre est décrémenté. La zone est remplie si le nombre est différent de zéro lorsque la ligne atteint l’extérieur de la figure.

Lorsqu’une application a terminé d’utiliser une région créée avec la CreatePolygonRgn fonction, elle doit sélectionner la région hors du contexte de l’appareil et utiliser la fonction pour la DeleteObject supprimer.

Exemple

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

Crée une région composée d’une série de polygones fermés.

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

Paramètres

lpPoints
Pointe vers un tableau de POINT structures ou un tableau d’objets CPoint qui définit les sommets des polygones. Chaque polygone doit être explicitement fermé, car le système ne les ferme pas automatiquement. Les polygones sont spécifiés consécutivement. La POINT structure a la forme suivante :

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

lpPolyCounts
Pointe vers un tableau d’entiers. Le premier entier spécifie le nombre de sommets dans le premier polygone du tableau lpPoints , le deuxième entier spécifie le nombre de sommets dans le deuxième polygone, et ainsi de suite.

nCount
Spécifie le nombre total d’entiers dans le tableau lpPolyCounts .

nPolyFillMode
Spécifie le mode de remplissage de polygones. Cette valeur peut être ALTER OU WINDING.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La région résultante est stockée dans l’objet CRgn .

Les polygones peuvent être disjoints, ou ils peuvent se chevaucher.

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Lorsque le mode de remplissage de polygones est ALTERNATE, le système remplit la zone entre les côtés impairs et pairs des polygones sur chaque ligne d’analyse. Autrement dit, le système remplit la zone entre le premier et le deuxième côté, entre le troisième et le quatrième côté, et ainsi de suite.

Lorsque le mode de remplissage de polygones est WINDING, le système utilise la direction dans laquelle une figure a été dessinée pour déterminer s’il faut remplir une zone. Chaque segment de ligne d’un polygone est dessiné dans le sens des aiguilles d’une montre ou dans un sens inverse. Chaque fois qu’une ligne imaginaire dessinée d’une zone fermée à l’extérieur d’une figure passe par un segment de ligne au niveau des aiguilles d’une montre, un nombre est incrémenté. Lorsque la ligne passe par un segment de ligne dans le sens inverse, le nombre est décrémenté. La zone est remplie si le nombre est différent de zéro lorsque la ligne atteint l’extérieur de la figure.

Lorsqu’une application a fini d’utiliser une région créée avec la CreatePolyPolygonRgn fonction, elle doit sélectionner la région hors du contexte de l’appareil et utiliser la fonction membre CGDIObject ::D eleteObject pour la supprimer.

CRgn ::CreateRectRgn

Crée une région rectangulaire stockée dans l’objet CRgn .

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

Paramètres

x1
Spécifie la coordonnée x logique du coin supérieur gauche de la région.

y1
Spécifie la coordonnée y logique du coin supérieur gauche de la région.

x2
Spécifie la coordonnée x logique du coin inférieur droit de la région.

y2
Spécifie la coordonnée y logique du coin inférieur droit de la région.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Une fois qu’elle a fini d’utiliser une région créée par CreateRectRgn, une application doit utiliser la fonction membre CGDIObject ::D eleteObject pour supprimer la région.

Exemple

CRgn   rgn;

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

Pour obtenir un exemple supplémentaire, consultez CRgn ::CombineRgn.

CRgn ::CreateRectRgnIndirect

Crée une région rectangulaire stockée dans l’objet CRgn .

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Paramètres

lpRect
Pointe vers une structure ou CRect un RECT objet qui contient les coordonnées logiques des coins supérieur gauche et inférieur droit de la région. La RECT structure a la forme suivante :

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

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Une fois qu’elle a fini d’utiliser une région créée par CreateRectRgnIndirect, une application doit utiliser la fonction membre CGDIObject ::D eleteObject pour supprimer la région.

Exemple

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

Crée une zone rectangulaire avec des angles arrondis stockés dans l’objet CRgn .

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

Paramètres

x1
Spécifie la coordonnée x logique du coin supérieur gauche de la région.

y1
Spécifie la coordonnée y logique du coin supérieur gauche de la région.

x2
Spécifie la coordonnée x logique du coin inférieur droit de la région.

y2
Spécifie la coordonnée y logique du coin inférieur droit de la région.

x3
Spécifie la largeur de l’ellipse utilisée pour créer les angles arrondis.

y3
Spécifie la hauteur de l’ellipse utilisée pour créer les angles arrondis.

Valeur de retour

Différent de zéro si l’opération a réussi ; sinon 0.

Notes

La taille d’une région est limitée à 32 767 par 32 767 unités logiques ou 64 Ko de mémoire, selon ce qui est plus petit.

Lorsqu’une application a fini d’utiliser une région créée avec la CreateRoundRectRgn fonction, elle doit sélectionner la région hors du contexte de l’appareil et utiliser la fonction membre CGDIObject ::D eleteObject pour la supprimer.

Exemple

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

Construit un objet CRgn.

CRgn();

Notes

Le m_hObject membre de données ne contient pas de région GDI Windows valide tant que l’objet n’est pas initialisé avec une ou plusieurs des autres CRgn fonctions membres.

Exemple

Consultez l’exemple de CRgn ::CreateRoundRectRgn.

CRgn ::EqualRgn

Détermine si la région donnée est équivalente à la région stockée dans l’objet CRgn .

BOOL EqualRgn(CRgn* pRgn) const;

Paramètres

pRgn
Identifie une région.

Valeur de retour

Différent de zéro si les deux régions sont équivalentes ; sinon 0.

Exemple

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

Retourne un pointeur vers un CRgn objet lorsqu’un handle est donné à une région Windows.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Paramètres

hRgn
Spécifie un handle dans une région Windows.

Valeur de retour

Pointeur vers un objet CRgn. Si la fonction n’a pas réussi, la valeur de retour est NULL.

Notes

Si un CRgn objet n’est pas déjà attaché au handle, un objet temporaire CRgn est créé et attaché. Cet objet temporaire CRgn est valide uniquement jusqu’à la prochaine fois que l’application a un temps d’inactivité dans sa boucle d’événements, auquel cas tous les objets graphiques temporaires sont supprimés. Une autre façon de dire ceci est que l’objet temporaire n’est valide que pendant le traitement d’un message de fenêtre.

CRgn ::GetRegionData

Remplit la mémoire tampon spécifiée avec des données décrivant la région.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Paramètres

lpRgnData
Pointe vers une structure de données RGNDATA qui reçoit les informations. Si ce paramètre est NULL, la valeur de retour contient le nombre d’octets nécessaires pour les données de région.

nCount
Spécifie la taille, en octets, de la mémoire tampon lpRgnData .

Valeur de retour

Si la fonction réussit et que nCount spécifie un nombre adéquat d’octets, la valeur de retour est toujours nCount. Si la fonction échoue ou si nCount spécifie un nombre inférieur à suffisant d’octets, la valeur de retour est 0 (erreur).

Notes

Ces données incluent les dimensions des rectangles qui composent la région. Cette fonction est utilisée conjointement avec la CRgn::CreateFromData fonction.

CRgn ::GetRgnBox

Récupère les coordonnées du rectangle englobant de l’objet CRgn .

int GetRgnBox(LPRECT lpRect) const;

Paramètres

lpRect
Pointe vers une structure ou CRect un RECT objet pour recevoir les coordonnées du rectangle englobant. La RECT structure a la forme suivante :

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

Valeur de retour

Spécifie le type de la région. Il peut s’agir de l’une des valeurs suivantes :

  • La région COMPLEXREGION a des bordures qui se chevauchent.

  • La région NULLREGION est vide.

  • L’objet ERROR CRgn ne spécifie pas de région valide.

  • La région SIMPLEREGION n’a pas de bordures qui se chevauchent.

Exemple

Consultez l’exemple de CRgn ::CreatePolygonRgn.

CRgn ::OffsetRgn

Déplace la région stockée dans l’objet CRgn par les décalages spécifiés.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Paramètres

x
Spécifie le nombre d’unités à déplacer vers la gauche ou la droite.

y
Spécifie le nombre d’unités à déplacer vers le haut ou vers le bas.

point
La coordonnée x du point spécifie le nombre d’unités à déplacer vers la gauche ou la droite. La coordonnée y du point spécifie le nombre d’unités à déplacer vers le haut ou vers le bas. Le paramètre de point peut être une POINT structure ou un CPoint objet.

Valeur de retour

Type de la nouvelle région. Il peut s’agir de l’une des valeurs suivantes :

  • La région COMPLEXREGION a des bordures qui se chevauchent.

  • Le handle de région ERROR n’est pas valide.

  • La région NULLREGION est vide.

  • La région SIMPLEREGION n’a pas de bordures qui se chevauchent.

Notes

La fonction déplace la région x unités le long de l’axe x et des unités y le long de l’axe y.

Les valeurs de coordonnées d’une région doivent être inférieures ou égales à 32 767 et supérieures ou égales à -32 768. Les paramètres x et y doivent être soigneusement choisis pour empêcher les coordonnées de région non valides.

Exemple

Consultez l’exemple de CRgn ::CreateEllipticRgn.

CRgn ::operator HRGN

Utilisez cet opérateur pour obtenir le handle GDI Windows attaché de l’objet CRgn .

operator HRGN() const;

Valeur de retour

Si elle réussit, un handle vers l’objet GDI Windows représenté par l’objet CRgn ; sinon NULL.

Notes

Cet opérateur est un opérateur de cast, qui prend en charge l’utilisation directe d’un objet HRGN.

Pour plus d’informations sur l’utilisation d’objets graphiques, consultez l’article Objets graphiques dans le Kit de développement logiciel (SDK) Windows.

CRgn ::P tInRegion

Vérifie si le point donné par x et y se trouve dans la région stockée dans l’objet CRgn .

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Paramètres

x
Spécifie la coordonnée x logique du point à tester.

y
Spécifie la coordonnée y logique du point à tester.

point
Les coordonnées x et y du point spécifient les coordonnées x et y du point pour tester la valeur de. Le paramètre de point peut être une POINT structure ou un CPoint objet.

Valeur de retour

Différent de zéro si le point se trouve dans la région ; sinon 0.

CRgn ::RectInRegion

Détermine si une partie du rectangle spécifié par lpRect se trouve dans les limites de la région stockée dans l’objet CRgn .

BOOL RectInRegion(LPCRECT lpRect) const;

Paramètres

lpRect
Pointe vers une structure ou CRect un RECT objet. La RECT structure a la forme suivante :

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

Valeur de retour

Différent de zéro si une partie du rectangle spécifié se trouve dans les limites de la région ; sinon 0.

CRgn ::SetRectRgn

Crée une région rectangulaire.

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

void SetRectRgn(LPCRECT lpRect);

Paramètres

x1
Spécifie la coordonnée x du coin supérieur gauche de la région rectangulaire.

y1
Spécifie la coordonnée y du coin supérieur gauche de la région rectangulaire.

x2
Spécifie la coordonnée x du coin inférieur droit de la région rectangulaire.

y2
Spécifie la coordonnée y du coin inférieur droit de la région rectangulaire.

lpRect
Spécifie la région rectangulaire. Peut être un pointeur vers une RECT structure ou un CRect objet.

Notes

Contrairement à CreateRectRgn, toutefois, il n’alloue pas de mémoire supplémentaire à partir du tas d’application Windows local. Au lieu de cela, il utilise l’espace alloué pour la région stockée dans l’objet CRgn . Cela signifie que l’objet CRgn doit déjà avoir été initialisé avec une région Windows valide avant d’appeler SetRectRgn. Les points donnés par x1, y1, x2 et y2 spécifient la taille minimale de l’espace alloué.

Utilisez cette fonction au lieu de la CreateRectRgn fonction membre pour éviter les appels au gestionnaire de mémoire local.

Voir aussi

CWnd, classe
Graphique hiérarchique