CRgn::CombineRgn
Crée une nouvelle zone GDI en combinant deux régions existantes.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode
);
Paramètres
pRgn1
Identifie une zone existante.pRgn2
Identifie une zone existante.nCombineMode
Spécifie l'exécution à exécuter en combinant les deux régions source.Il peut être l'une des valeurs suivantes :RGN_AND utilise superposer des régions des deux régions (intersection).
RGN_COPY crée une copie de la zone 1 (identifiée par pRgn1).
RGN_DIFF crée une zone comprenant les régions de la zone 1 (identifiée par pRgn1) qui ne font pas partie de la zone 2 (identifiée par pRgn2).
RGN_OR combine les deux régions dans son intégralité (union).
RGN_XOR combine les deux régions mais supprime superposer des zones.
Valeur de retour
Spécifie le type de la zone résultant.Il peut être l'une des valeurs suivantes :
La nouvelle zone deCOMPLEXREGION a superposer des zones.
erreur Aucune zone créée.
La nouvelle zone deNULLREGION est vide.
La nouvelle zone deSIMPLEREGION n'a aucun superposés zone.
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 résultant de zone est stocké dans l'objet d' CRgn .Ainsi, c'est-à-dire que zone est stockée dans l'objet d' CRgn est remplacé par la zone combinée.
La taille d'une zone est limitée à 32.767 par 32.767 unités logiques ou ko à de mémoire, ce qui est plus petit.
Utilisation CopyRgn de copier simplement une zone dans une autre zone.
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 ));
Configuration requise
Header: afxwin.h