]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/wince/missing.h
Fixed bug #1022383: 'several ComboBoxes appear selected'
[wxWidgets.git] / include / wx / msw / wince / missing.h
index 7c4ca560d0f020051bb6acd23df8e4c374caccf7..33bfc6eab34fe9f0d7f3e4fdcbd1c5d769087b81 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
 // 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 licence
 ///////////////////////////////////////////////////////////////////////////////
 #ifndef _WX_CE_MISSING_H_
 #define _WX_CE_MISSING_H_
 
-inline BOOL IsIconic( HWND hWnd )
+#include "wx/msw/private.h"
+#include "shellapi.h"
+
+inline BOOL IsIconic( HWND WXUNUSED(hWnd) )
 {
     // Probably not right...
 #if 0
@@ -22,149 +25,120 @@ inline BOOL IsIconic( HWND hWnd )
     return FALSE;
 }
 
-#ifdef WIN32_PLATFORM_PSPC
+#ifdef __POCKETPC__
 #define SM_CXCURSOR             13
 #define SM_CYCURSOR             14
 #endif
 
-/*
-Most of these are in MSVC++6.0   <wx\wince\winuser.h>
-see also                         <wx\msw\gnuwin32\winresrc.h>
-*/
+// Missing from eVC 4 for some reason
+#ifndef I_IMAGENONE
+#define I_IMAGENONE (-2)
+#endif
 
-// ----------------------------------------------------------------------------
-// Used in msgdlg.cpp, evtloop.cpp
-// ----------------------------------------------------------------------------
+#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
 
-////////////////////////////////////////////////////////
-
-// JACS: I've commented these out in order to start from
-// scratch. I don't think we should simply add styles,
-// classes etc. when we don't know if they're supported
-// by WinCE libraries.
+#ifndef HGDI_ERROR
+#define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
+#endif
 
-#if 0
+// some windows styles don't exist in CE SDK, replace them with closest
+// equivalents
+#ifndef WS_THICKFRAME
+    #define WS_THICKFRAME WS_BORDER
+#endif
 
-/*
- * 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
+#ifndef WS_MINIMIZE
+    #define WS_MINIMIZE 0
+#endif
 
+#ifndef WS_MAXIMIZE
+    #define WS_MAXIMIZE 0
 #endif
- // 0
 
-////////////////////////////////////////////////////////
+
+// 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 *));
+
+#define O_RDONLY       0x0000  /* open for reading only */
+#define O_WRONLY       0x0001  /* open for writing only */
+#define O_RDWR         0x0002  /* open for reading and writing */
+#define O_APPEND       0x0008  /* writes done at eof */
+
+#define O_CREAT        0x0100  /* create and open file */
+#define O_TRUNC        0x0200  /* open and truncate */
+#define O_EXCL         0x0400  /* open only if file doesn't already exist */
+
+#define O_TEXT         0x4000  /* file mode is text (translated) */
+#define O_BINARY       0x8000  /* file mode is binary (untranslated) */
 
 #endif // _WX_CE_MISSING_H_
+