Bonjour,
J'ai besoin de vos lumières sur la mise en oeuvre de la classe CRgn et la méthode CombineRgn.

Exemple : je veux combiner 2 rectangles,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CPoint topLeft(100,100);
CPoint bottomRight(400,355);
m_Rectangle1.SetRect(topLeft, bottomRight);
 
//décale les sommets du 2° rectangle
topLeft.Offset(200,200);
bottomRight.Offset(100,100);
 
m_Rectangle2.SetRect(topLeft, bottomRight);
 
m_MaRegion1.CreateRectRgnIndirect(&m_Rectangle1);
m_MaRegion2.CreateRectRgnIndirect(&m_Rectangle2);
 
int Test =  RegCombinee.CombineRgn(&m_MaRegion1,&m_MaRegion2, RGN_OR);
Test me renvoie toujours erreur.
Mes 2 rectangles ont bien une intersection commune comme dans la doc MSDN.
Quel que soit le code RGN_OR, RGN_AND, RGN_DIFF, j'obtiens toujours erreur.

J'ai essayé également avec HRGN, au cas où, mais non idem.

Une solution de contournement consiste à définir les sommets de ma région et d'utiliser CreatePolygonRgn ou CreatePolyPolygonRgn, mais je trouve cette solution lourde, inesthétique, sans parler de la relecture et de la maintenance dans quelques mois...

merci d'avance