]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
fixed bug with the caret positioning after SetValue() introduced by the last commit
[wxWidgets.git] / include / wx / msw / private.h
index 20b4d94676bc723a73e6f0fd734abd95b1a001d6..25d0b5d7869a3be917cdedd238737c645b81bb12 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"
+    // 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;
 
@@ -72,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??)
@@ -202,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)
@@ -248,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
 // ---------------------------------------------------------------------------
@@ -298,6 +332,9 @@ private:
 #define GetHfont()              ((HFONT)GetHFONT())
 #define GetHfontOf(font)        ((HFONT)(font).GetHFONT())
 
+#define GetHpalette()           ((HPALETTE)GetHPALETTE())
+#define GetHpaletteOf(pal)      ((HPALETTE)(pal)->GetHPALETTE())
+
 #define GetHrgn()               ((HRGN)GetHRGN())
 #define GetHrgnOf(rgn)          ((HRGN)(rgn).GetHRGN())
 
@@ -357,8 +394,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