+#else // Symantec-MicroWin
+ // draw a cross
+ HPEN blackPen = ::CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
+ HPEN whiteBrush = (HPEN)::GetStockObject(WHITE_BRUSH);
+ HPEN hPenOld = (HPEN)::SelectObject(GetHdc(), blackPen);
+ HPEN hBrushOld = (HPEN)::SelectObject(GetHdc(), whiteBrush);
+ ::SetROP2(GetHdc(), R2_COPYPEN);
+ Rectangle(GetHdc(), x1, y1, x2, y2);
+ MoveToEx(GetHdc(), x1, y1, NULL);
+ LineTo(GetHdc(), x2, y2);
+ MoveToEx(GetHdc(), x2, y1, NULL);
+ LineTo(GetHdc(), x1, y2);
+ ::SelectObject(GetHdc(), hPenOld);
+ ::SelectObject(GetHdc(), hBrushOld);
+ ::DeleteObject(blackPen);
+#endif // Win32/Symantec-MicroWin
+
+ CalcBoundingBox(x1, y1);
+ CalcBoundingBox(x2, y2);
+}
+
+void wxDC::DoDrawPoint(wxCoord x, wxCoord y)
+{
+ WXMICROWIN_CHECK_HDC
+
+ COLORREF color = 0x00ffffff;
+ if (m_pen.Ok())
+ {
+ color = m_pen.GetColour().GetPixel();
+ }
+
+ SetPixel(GetHdc(), XLOG2DEV(x), YLOG2DEV(y), color);
+
+ CalcBoundingBox(x, y);
+}
+
+void wxDC::DoDrawPolygon(int n,
+ wxPoint points[],
+ wxCoord xoffset,
+ wxCoord yoffset,
+ int WXUNUSED_IN_WINCE(fillStyle))
+{
+ WXMICROWIN_CHECK_HDC
+
+ wxColourChanger cc(*this); // needed for wxSTIPPLE_MASK_OPAQUE handling
+
+ // Do things less efficiently if we have offsets
+ if (xoffset != 0 || yoffset != 0)
+ {
+ POINT *cpoints = new POINT[n];
+ int i;
+ for (i = 0; i < n; 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)Polygon(GetHdc(), cpoints, n);
+#ifndef __WXWINCE__
+ SetPolyFillMode(GetHdc(),prev);
+#endif
+ delete[] cpoints;
+ }
+ else
+ {
+ int i;
+ for (i = 0; i < n; i++)
+ CalcBoundingBox(points[i].x, points[i].y);
+
+#ifndef __WXWINCE__
+ int prev = SetPolyFillMode(GetHdc(),fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING);
+#endif
+ (void)Polygon(GetHdc(), (POINT*) points, n);
+#ifndef __WXWINCE__
+ SetPolyFillMode(GetHdc(),prev);
+#endif
+ }
+}
+
+void
+wxDC::DoDrawPolyPolygon(int n,
+ int count[],
+ wxPoint points[],
+ wxCoord xoffset,
+ wxCoord yoffset,
+ int fillStyle)
+{
+#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
+ }
+#endif
+ // __WXWINCE__
+}
+
+void wxDC::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset)
+{
+ WXMICROWIN_CHECK_HDC