]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
wxGTK popup menu positioning fix
[wxWidgets.git] / include / wx / msw / private.h
index 334db2efe73526d06ef870cce63c033ac22f4553..d643ce0773b0b33d07dd95450e5fcffbec236cef 100644 (file)
 #ifndef _WX_PRIVATE_H_
 #define _WX_PRIVATE_H_
 
+#ifndef STRICT
+    #define STRICT 1
+#endif
+
 #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"
 
+#include "wx/log.h"
+
 class WXDLLEXPORT wxFont;
 class WXDLLEXPORT wxWindow;
 
@@ -67,17 +78,13 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
 
 // this defines a CASTWNDPROC macro which casts a pointer to the type of a
 // window proc
-
-#if defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)
-    #define CASTWNDPROC (long unsigned)
+#if defined(STRICT) || defined(__GNUC__)
+    typedef WNDPROC WndProcCast;
 #else
-    #if defined(STRICT) || defined(__GNUC__)
-        typedef WNDPROC WndProcCast;
-    #else
-        typedef FARPROC WndProcCast;
-    #endif
-    #define CASTWNDPROC (WndProcCast)
-#endif // __GNUWIN32_OLD__
+    typedef FARPROC WndProcCast;
+#endif
+
+#define CASTWNDPROC (WndProcCast)
 
 // ---------------------------------------------------------------------------
 // some stuff for old Windows versions (FIXME: what does it do here??)
@@ -184,7 +191,7 @@ extern LONG APIENTRY _EXPORT
 // ---------------------------------------------------------------------------
 
 // 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))
@@ -197,7 +204,7 @@ extern LONG APIENTRY _EXPORT
 // make conversion from wxColour and COLORREF a bit less painful
 inline COLORREF wxColourToRGB(const wxColour& c)
 {
-    return RGB(c.Red(), c.Green(), c.Blue());
+    return PALETTERGB(c.Red(), c.Green(), c.Blue());
 }
 
 inline void wxRGBToColour(wxColour& c, COLORREF rgb)
@@ -243,6 +250,38 @@ inline bool wxIsCtrlDown()
     return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
 }
 
+// wrapper around GetWindowRect() and GetClientRect() APIs doing error checking
+// for Win32
+inline RECT wxGetWindowRect(HWND hwnd)
+{
+    RECT rect;
+#ifdef __WIN16__
+    ::GetWindowRect(hwnd, &rect);
+#else // Win32
+    if ( !::GetWindowRect(hwnd, &rect) )
+    {
+        wxLogLastError(_T("GetWindowRect"));
+    }
+#endif // Win16/32
+
+    return rect;
+}
+
+inline RECT wxGetClientRect(HWND hwnd)
+{
+    RECT rect;
+#ifdef __WIN16__
+    ::GetClientRect(hwnd, &rect);
+#else // Win32
+    if ( !::GetClientRect(hwnd, &rect) )
+    {
+        wxLogLastError(_T("GetClientRect"));
+    }
+#endif // Win16/32
+
+    return rect;
+}
+
 // ---------------------------------------------------------------------------
 // small helper classes
 // ---------------------------------------------------------------------------
@@ -352,8 +391,8 @@ WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
 // Does this window style specify any border?
 inline bool wxStyleHasBorder(long style)
 {
-  return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
-                   wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
+    return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
+                     wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
 }
 
 // find the window for HWND which is part of some wxWindow, returns just the