]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
Added some missing STL-like wxArray/wxArrayString constructors.
[wxWidgets.git] / include / wx / msw / private.h
index 31a435f2a4c98f0666e0f51b555edb65944fa383..3d2bf3cb879804640352bde13e31b7a458ac7052 100644 (file)
 #ifndef _WX_PRIVATE_H_
 #define _WX_PRIVATE_H_
 
-#ifndef STRICT
-    #define STRICT 1
-#endif
-
-#include <windows.h>
-
+#include "wx/msw/wrapwin.h"
 
 #if defined (__WXWINCE__)
     #include <wingdi.h>     // RGB, COLORREF
+    #define ERRFALSE(x)
     #include <winuser.h>    // Global Namespaces ::GetKeyState, ::GetWindowRect
+    #include "wx/msw/winundef.h"
 #endif
 
 
@@ -32,9 +29,6 @@
     #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"
 
@@ -80,7 +74,7 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
 // define things missing from some compilers' headers
 // ---------------------------------------------------------------------------
 
-#if defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS
+#if defined(__WXWINCE__) || (defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS)
 #ifndef ZeroMemory
     inline void ZeroMemory(void *buf, size_t len) { memset(buf, 0, len); }
 #endif
@@ -88,9 +82,7 @@ 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(__WXWINCE__)
-    typedef FARPROC WndProcCast;
-#elif defined(STRICT) || defined(__GNUC__)
+#if defined(STRICT) || defined(__GNUC__)
     typedef WNDPROC WndProcCast;
 #else
     typedef FARPROC WndProcCast;
@@ -99,6 +91,8 @@ WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
 
 #define CASTWNDPROC (WndProcCast)
 
+
+
 // ---------------------------------------------------------------------------
 // some stuff for old Windows versions (FIXME: what does it do here??)
 // ---------------------------------------------------------------------------
@@ -286,12 +280,18 @@ HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY);
 // get the current state of SHIFT/CTRL keys
 inline bool wxIsShiftDown()
 {
-    return (::GetKeyState(VK_SHIFT) & 0x100) != 0;
+//    return (::GetKeyState(VK_SHIFT) & 0x100) != 0;
+    // Returns different negative values on WinME and WinNT,
+    // so simply test for negative value.
+    return ::GetKeyState(VK_SHIFT) < 0;
 }
 
 inline bool wxIsCtrlDown()
 {
-    return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+//    return (::GetKeyState(VK_CONTROL) & 0x100) != 0;
+    // Returns different negative values on WinME and WinNT,
+    // so simply test for negative value.
+    return ::GetKeyState(VK_CONTROL) < 0;
 }
 
 // wrapper around GetWindowRect() and GetClientRect() APIs doing error checking
@@ -338,7 +338,8 @@ struct WinStruct : public T
 {
     WinStruct()
     {
-        ::ZeroMemory(this, cbSize = sizeof(T));
+        ::ZeroMemory(this, sizeof(T));
+        cbSize = sizeof(T);
     }
 };
 
@@ -395,6 +396,7 @@ 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
@@ -433,6 +435,7 @@ private:
 
     DECLARE_NO_COPY_CLASS(GlobalPtr)
 };
+#endif
 
 // ---------------------------------------------------------------------------
 // macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
@@ -479,9 +482,7 @@ private:
 // global data
 // ---------------------------------------------------------------------------
 
-WXDLLEXPORT_DATA(extern wxChar*) wxBuffer;
-
-WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance;
+WXDLLIMPEXP_DATA_BASE(extern HINSTANCE) wxhInstance;
 
 // ---------------------------------------------------------------------------
 // global functions
@@ -489,10 +490,10 @@ WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance;
 
 extern "C"
 {
-    WXDLLEXPORT HINSTANCE wxGetInstance();
+    WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();
 }
 
-WXDLLEXPORT void wxSetInstance(HINSTANCE hInst);
+WXDLLIMPEXP_BASE void wxSetInstance(HINSTANCE hInst);
 
 #if wxUSE_GUI
 
@@ -547,10 +548,63 @@ WXDLLEXPORT extern wxWindow* wxFindWinFromHandle(WXHWND hWnd);
 // returns the wxWindow corresponding to the given HWND or NULL.
 WXDLLEXPORT extern wxWindow *wxGetWindowFromHWND(WXHWND hwnd);
 
-
 // Get the size of an icon
 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>
+
+#if _WIN32_WCE <= 211
+#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
+#endif
+
+#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
+
+#endif
+    // 0
+
+#endif
+    // __WXWINCE__
 #endif // wxUSE_GUI
 
 #endif