]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
Added missing NO_GCC_PRAGMA check.
[wxWidgets.git] / include / wx / msw / private.h
index 3e5465eec32254df85bd303d0ed0fd30ad59384c..a2ef6bcba4692c82614c234e4f716596d3a326de 100644 (file)
 #ifndef _WX_PRIVATE_H_
 #define _WX_PRIVATE_H_
 
-#ifndef STRICT
-    #define STRICT 1
-#endif
-
-#include <windows.h>
-
-
-#if defined (__WXWINCE__)
-    #include <wingdi.h>     // RGB, COLORREF
-    #include <winuser.h>    // Global Namespaces ::GetKeyState, ::GetWindowRect
-#endif
-
+#include "wx/msw/wrapwin.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 fixes for MSLU:
 #include "wx/msw/mslu.h"
 
@@ -97,6 +83,8 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
 
 #define CASTWNDPROC (WndProcCast)
 
+
+
 // ---------------------------------------------------------------------------
 // some stuff for old Windows versions (FIXME: what does it do here??)
 // ---------------------------------------------------------------------------
@@ -303,14 +291,11 @@ inline bool wxIsCtrlDown()
 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;
 }
@@ -318,14 +303,11 @@ inline RECT wxGetWindowRect(HWND hwnd)
 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;
 }
@@ -400,7 +382,6 @@ private:
    DECLARE_NO_COPY_CLASS(SelectInHDC)
 };
 
-#ifndef __WXWINCE__
 // when working with global pointers (which is unfortunately still necessary
 // sometimes, e.g. for clipboard) it is important to unlock them exactly as
 // many times as we lock them which just asks for using a "smart lock" class
@@ -409,7 +390,7 @@ class GlobalPtr
 public:
     GlobalPtr(HGLOBAL hGlobal) : m_hGlobal(hGlobal)
     {
-        m_ptr = ::GlobalLock(hGlobal);
+        m_ptr = GlobalLock(hGlobal);
         if ( !m_ptr )
         {
             wxLogLastError(_T("GlobalLock"));
@@ -418,7 +399,7 @@ public:
 
     ~GlobalPtr()
     {
-        if ( !::GlobalUnlock(m_hGlobal) )
+        if ( !GlobalUnlock(m_hGlobal) )
         {
 #ifdef __WXDEBUG__
             // this might happen simply because the block became unlocked
@@ -439,7 +420,6 @@ private:
 
     DECLARE_NO_COPY_CLASS(GlobalPtr)
 };
-#endif
 
 // ---------------------------------------------------------------------------
 // macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
@@ -465,6 +445,9 @@ private:
 #define GetHaccel()             ((HACCEL)GetHACCEL())
 #define GetHaccelOf(table)      ((HACCEL)((table).GetHACCEL()))
 
+#define GetHbrush()             ((HPEN)GetResourceHandle())
+#define GetHbrushOf(brush)      ((HPEN)(brush).GetResourceHandle())
+
 #define GetHmenu()              ((HMENU)GetHMenu())
 #define GetHmenuOf(menu)        ((HMENU)menu->GetHMenu())
 
@@ -477,6 +460,9 @@ private:
 #define GetHpalette()           ((HPALETTE)GetHPALETTE())
 #define GetHpaletteOf(pal)      ((HPALETTE)(pal).GetHPALETTE())
 
+#define GetHpen()               ((HPEN)GetResourceHandle())
+#define GetHpenOf(pen)          ((HPEN)(pen).GetResourceHandle())
+
 #define GetHrgn()               ((HRGN)GetHRGN())
 #define GetHrgnOf(rgn)          ((HRGN)(rgn).GetHRGN())
 
@@ -558,55 +544,56 @@ WXDLLEXPORT extern wxSize wxGetHiconSize(HICON hicon);
 // Lines are drawn differently for WinCE and regular WIN32
 WXDLLEXPORT void wxDrawLine(HDC hdc, int x1, int y1, int x2, int y2);
 
-// LocalAlloc should be used on WinCE
-#ifdef __WXWINCE__
-#include <winbase.h>
-
-#define GlobalAlloc LocalAlloc
-#define GlobalFree LocalFree
-#define GlobalLock(mem) mem
-#define GlobalUnlock(mem)
-#define GlobalSize LocalSize
-#define GPTR LPTR
-#define GHND LPTR
-#define GMEM_MOVEABLE 0
-#define GMEM_SHARE 0
-
-#if 0
-
-HLOCAL
-WINAPI
-LocalAlloc (
-    UINT fuFlags,
-    UINT cbBytes
-    );
-
-HLOCAL
-WINAPI
-LocalFree (
-    HLOCAL hMem
-    );
-
-#ifndef LMEM_FIXED
-#define LMEM_FIXED          0x0000
-#define LMEM_MOVEABLE       0x0002
-#define LMEM_NOCOMPACT      0x0010       /**** Used for Moveable Memory  ***/
-#define LMEM_NODISCARD      0x0020       /**** Ignored *****/
-#define LMEM_ZEROINIT       0x0040
-#define LMEM_MODIFY         0x0080       /*** Used only in LocalReAlloc() **/
-#define LMEM_DISCARDABLE    0x0F00       /**** Ignored ****/
-#define LMEM_VALID_FLAGS    0x0F72
-#define LMEM_INVALID_HANDLE 0x8000
-
-#define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
-#define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
-#endif
+// ----------------------------------------------------------------------------
+// 32/64 bit helpers
+// ----------------------------------------------------------------------------
 
-#endif
-    // 0
+#ifdef __WIN64__
+
+inline void *wxGetWindowProc(HWND hwnd)
+{
+    return (void *)::GetWindowLongPtr(hwnd, GWLP_WNDPROC);
+}
+
+inline void *wxGetWindowUserData(HWND hwnd)
+{
+    return (void *)::GetWindowLongPtr(hwnd, GWLP_USERDATA);
+}
+
+inline WNDPROC wxSetWindowProc(HWND hwnd, WNDPROC func)
+{
+    return (WNDPROC)::SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)func);
+}
+
+inline void *wxSetWindowUserData(HWND hwnd, void *data)
+{
+    return (void *)::SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)data);
+}
+
+#else // __WIN32__
+
+inline void *wxGetWindowProc(HWND hwnd)
+{
+    return (void *)::GetWindowLong(hwnd, GWL_WNDPROC);
+}
+
+inline void *wxGetWindowUserData(HWND hwnd)
+{
+    return (void *)::GetWindowLong(hwnd, GWL_USERDATA);
+}
+
+inline WNDPROC wxSetWindowProc(HWND hwnd, WNDPROC func)
+{
+    return (WNDPROC)::SetWindowLong(hwnd, GWL_WNDPROC, (LONG)func);
+}
+
+inline void *wxSetWindowUserData(HWND hwnd, void *data)
+{
+    return (void *)::SetWindowLong(hwnd, GWL_USERDATA, (LONG)data);
+}
+
+#endif // __WIN64__/__WIN32__
 
-#endif
-    // __WXWINCE__
 #endif // wxUSE_GUI
 
 #endif