+#ifdef __WXWINCE__
+ wxDCBase::DoDrawPolyPolygon(n, count, points, xoffset, yoffset, fillStyle);
+#else
+ WXMICROWIN_CHECK_HDC
+
+ wxColourChanger cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
+ int i, cnt;
+ for (i = cnt = 0; i < n; i++)
+ cnt += count[i];
+
+ // Do things less efficiently if we have offsets
+ if (xoffset != 0 || yoffset != 0)
+ {
+ POINT *cpoints = new POINT[cnt];
+ for (i = 0; i < cnt; i++)
+ {
+ cpoints[i].x = (int)(points[i].x + xoffset);
+ cpoints[i].y = (int)(points[i].y + yoffset);
+
+ CalcBoundingBox(cpoints[i].x, cpoints[i].y);
+ }
+#ifndef __WXWINCE__
+ int prev = SetPolyFillMode(GetHdc(),fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING);
+#endif
+ (void)PolyPolygon(GetHdc(), cpoints, count, n);
+#ifndef __WXWINCE__
+ SetPolyFillMode(GetHdc(),prev);
+#endif
+ delete[] cpoints;
+ }
+ else
+ {
+ for (i = 0; i < cnt; i++)
+ CalcBoundingBox(points[i].x, points[i].y);
+
+#ifndef __WXWINCE__
+ int prev = SetPolyFillMode(GetHdc(),fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING);
+#endif
+ (void)PolyPolygon(GetHdc(), (POINT*) points, count, n);
+#ifndef __WXWINCE__
+ SetPolyFillMode(GetHdc(),prev);
+#endif
+ }