#include <windows.h>
+#ifdef __WXMICROWIN__
+/* Extra prototypes and symbols not defined by MicroWindows */
+#include "wx/msw/microwin.h"
+#endif
+
// undefine conflicting symbols which were defined in windows.h
#include "wx/msw/winundef.h"
// define things missing from some compilers' headers
// ---------------------------------------------------------------------------
-#if defined(__GNUWIN32__) && !defined(wxUSE_NORLANDER_HEADERS)
+#if defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS
#ifndef ZeroMemory
inline void ZeroMemory(void *buf, size_t len) { memset(buf, 0, len); }
#endif
// this defines a CASTWNDPROC macro which casts a pointer to the type of a
// window proc
-#ifdef __GNUWIN32_OLD__
+#if defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)
#define CASTWNDPROC (long unsigned)
#else
#if defined(STRICT) || defined(__GNUC__)
// ---------------------------------------------------------------------------
// a wrapper macro for ZeroMemory()
-#ifdef __WIN32__
+#if defined(__WIN32__) && !defined(__WXMICROWIN__)
#define wxZeroMemory(obj) ::ZeroMemory(&obj, sizeof(obj))
#else
#define wxZeroMemory(obj) memset((void*) & obj, 0, sizeof(obj))
#define GetHfont() ((HFONT)GetHFONT())
#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
+#define GetHrgn() ((HRGN)GetHRGN())
+#define GetHrgnOf(rgn) ((HRGN)(rgn).GetHRGN())
+
#endif // wxUSE_GUI
// ---------------------------------------------------------------------------