]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/wince/missing.h
Native wxControl::DoGetBestSize() implementation
[wxWidgets.git] / include / wx / msw / wince / missing.h
index d43caddfcbe8d95d1cd111014dde5b9650449e50..99d6ce7583f7950e190843b99f55522e974d6fa3 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        wince/missing.h
-// Purpose:     Missing things in WinCE 3.0
+// Purpose:     Missing things in WinCE
 // Author:      Marco Cavallini
 // Modified by:
 // Created:     16/11/2002
-// RCS-ID:      
+// RCS-ID:
 // Copyright:   (c) KOAN SAS ( www.koansoftware.com )
-// Licence:     wxWindows license
-/////////////////////////////////////////////////////////////////////////////// 
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_CE_MISSING_H_
 #define _WX_CE_MISSING_H_
 
-
 #include "wx/msw/private.h"
-
-/*
-Most of these are in MSVC++6.0   <wx\wince\winuser.h>
-see also                         <wx\msw\gnuwin32\winresrc.h>
-*/
-////////////////////////////////////////////////////////
-
-/*
- * Extended Window Styles
- */
-#define WS_EX_DLGMODALFRAME     0x00000001L
-#define WS_EX_NOPARENTNOTIFY    0x00000004L
-#define WS_EX_TOPMOST           0x00000008L
-#define WS_EX_ACCEPTFILES       0x00000010L
-#define WS_EX_TRANSPARENT       0x00000020L
-
-#define WS_EX_MDICHILD          0x00000040L
-#define WS_EX_TOOLWINDOW        0x00000080L
-#define WS_EX_WINDOWEDGE        0x00000100L
-#define WS_EX_CLIENTEDGE        0x00000200L
-#define WS_EX_CONTEXTHELP       0x00000400L
-
-#define WS_EX_RIGHT             0x00001000L
-#define WS_EX_LEFT              0x00000000L
-#define WS_EX_RTLREADING        0x00002000L
-#define WS_EX_LTRREADING        0x00000000L
-#define WS_EX_LEFTSCROLLBAR     0x00004000L
-#define WS_EX_RIGHTSCROLLBAR    0x00000000L
-
-#define WS_EX_CONTROLPARENT     0x00010000L
-#define WS_EX_STATICEDGE        0x00020000L
-#define WS_EX_APPWINDOW         0x00040000L
-
-
-#define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
-#define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
-
-
-/*
- * Flags for TrackPopupMenu
- */
-#define TPM_LEFTBUTTON  0x0000L
-#define TPM_RIGHTBUTTON 0x0002L
-#define TPM_LEFTALIGN   0x0000L
-#define TPM_CENTERALIGN 0x0004L
-#define TPM_RIGHTALIGN  0x0008L
-
-#define TPM_TOPALIGN        0x0000L
-#define TPM_VCENTERALIGN    0x0010L
-#define TPM_BOTTOMALIGN     0x0020L
-
-#define TPM_HORIZONTAL      0x0000L     /* Horz alignment matters more */
-#define TPM_VERTICAL        0x0040L     /* Vert alignment matters more */
-#define TPM_NONOTIFY        0x0080L     /* Don't send any notification msgs */
-#define TPM_RETURNCMD       0x0100L
-
-#define TPM_RECURSE         0x0001L
-
-
-
-////////////////////////////////////////////////////////
-// Missing declarations into WinCE include files (MCK)
-////////////////////////////////////////////////////////
-
-HCURSOR WINAPI 
-DestroyCursor(HCURSOR hCursor);
-
-HCURSOR WINAPI 
-CreateCursor(HINSTANCE hInst, 
-    int xHotSpot, 
-    int yHotSpot, 
-    int nWidth, 
-    int nHeight, 
-    CONST VOID *pvANDPlane, 
-    CONST VOID *pvXORPlane ); 
-
-////////////////////////////////////////////////////////
-
-int WINAPI
-GetScrollPos(
-    HWND hWnd,
-    int nBar);
-
-bool WINAPI
-GetScrollRange(
-    HWND hWnd,
-    int nBar,
-    LPINT lpMinPos,
-    LPINT lpMaxPos);
-
-bool WINAPI
-ScrollWindow(
-    HWND hWnd,
-    int XAmount,
-    int YAmount,
-    CONST RECT *lpRect,
-    CONST RECT *lpClipRect);
-
-LRESULT WINAPI
-CallWindowProcA(
-    WNDPROC lpPrevWndFunc,
-    HWND hWnd,
-    UINT Msg,
-    WPARAM wParam,
-    LPARAM lParam);
-
-LRESULT WINAPI
-CallWindowProcW(
-    WNDPROC lpPrevWndFunc,
-    HWND hWnd,
-    UINT Msg,
-    WPARAM wParam,
-    LPARAM lParam);
-
-#ifdef UNICODE
-#define CallWindowProc  CallWindowProcW
-#else
-#define CallWindowProc  CallWindowProcA
-#endif // !UNICODE
-
-////////////////////////////////////////////////////////
+#include "shellapi.h"
+
+inline BOOL IsIconic( HWND WXUNUSED(hWnd) )
+{
+    // Probably not right...
+#if 0
+    long style = GetWindowLong(hWnd, GWL_STYLE);
+    return ((style & WS_MINIMIZE) == 0);
+#endif
+    return FALSE;
+}
+
+#ifdef WIN32_PLATFORM_PSPC
+#define SM_CXCURSOR             13
+#define SM_CYCURSOR             14
+#endif
+
+// Missing from eVC 4 for some reason
+#ifndef I_IMAGENONE
+#define I_IMAGENONE (-2)
+#endif
+
+#ifndef TBSTYLE_NO_DROPDOWN_ARROW
+#define TBSTYLE_NO_DROPDOWN_ARROW 0x0080
+#endif
+
+#if _WIN32_WCE >= 400 && !defined(SHCMBM_GETMENU)
+
+// aygshell.h missing from eVC 4 for some reason
+// NB not missing from Pocket PC 2003, hence the test for SHCMBM_GETMENU
+
+#define SHCMBM_GETMENU      (WM_USER + 402)
+#define SHCMBM_SETSUBMENU   (WM_USER + 400) // wparam == id of button, lParam == hmenu, return is old hmenu
+#define SHCMBM_GETSUBMENU   (WM_USER + 401) // lParam == ID
+#define SHCMBM_GETMENU      (WM_USER + 402) // get the owning hmenu (as specified in the load resource)
+
+#define SHIDIF_DONEBUTTON           0x0001
+#define SHIDIF_SIZEDLG              0x0002
+#define SHIDIF_SIZEDLGFULLSCREEN    0x0004
+#define SHIDIF_SIPDOWN              0x0008
+#define SHIDIF_FULLSCREENNOMENUBAR  0x0010
+#define SHIDIF_EMPTYMENU            0x0020
+
+#define SHFS_SHOWTASKBAR            0x0001
+#define SHFS_HIDETASKBAR            0x0002
+#define SHFS_SHOWSIPBUTTON          0x0004
+#define SHFS_HIDESIPBUTTON          0x0008
+#define SHFS_SHOWSTARTICON          0x0010
+#define SHFS_HIDESTARTICON          0x0020
+
+typedef struct tagSHMENUBARINFO
+{
+    DWORD cbSize;               // IN  - Indicates which members of struct are valid
+    HWND hwndParent;            // IN
+    DWORD dwFlags;              // IN  - Some features we want
+    UINT nToolBarId;            // IN  - Which toolbar are we using
+    HINSTANCE hInstRes;         // IN  - Instance that owns the resources
+    int nBmpId;
+    int cBmpImages;             // IN  - Count of bitmap images
+    HWND hwndMB;                // OUT
+    COLORREF clrBk;             // IN  - background color of the menu bar (excluding sip)
+} SHMENUBARINFO, *PSHMENUBARINFO;
+
+extern "C"
+{
+    BOOL SHFullScreen(HWND hwndRequester, DWORD dwState);
+
+    WINSHELLAPI BOOL  SHCreateMenuBar(SHMENUBARINFO *pmbi);
+}
+
+#endif // _WIN32_WCE >= 400
+
+// Used in msgdlg.cpp, evtloop.cpp
+#ifndef MB_TASKMODAL
+#define MB_TASKMODAL 0x2000
+#endif
+
+#ifndef HGDI_ERROR
+#define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
+#endif
+
+// some windows styles don't exist in CE SDK, replace them with closest
+// equivalents
+#ifndef WS_THICKFRAME
+    #define WS_THICKFRAME WS_BORDER
+#endif
+
+#ifndef WS_MINIMIZE
+    #define WS_MINIMIZE 0
+#endif
+
+#ifndef WS_MAXIMIZE
+    #define WS_MAXIMIZE 0
+#endif
+
+
+// global memory functions don't exist under CE (good riddance, of course, but
+// the existing code still uses them in some places, so make it compile)
+//
+// update: they're defined in eVC 4 inside "#ifdef UNDER_CE" block
+#ifndef UNDER_CE
+    #define GlobalAlloc LocalAlloc
+    #define GlobalFree LocalFree
+    #define GlobalSize LocalSize
+    #define GPTR LPTR
+    #define GHND LPTR
+    #define GMEM_MOVEABLE 0
+    #define GMEM_SHARE 0
+#endif // !UNDER_CE
+
+// WinCE RTL doesn't implement bsearch() used in encconv.cpp
+extern "C" void *
+bsearch(const void *key, const void *base, size_t num, size_t size,
+        int (wxCMPFUNC_CONV *cmp)(const void *, const void *));
 
 #endif // _WX_CE_MISSING_H_
+