Home | History | Annotate | Download | only in Common
      1 // MyWindows.h
      2 
      3 #ifndef __MY_WINDOWS_H
      4 #define __MY_WINDOWS_H
      5 
      6 #ifdef _WIN32
      7 
      8 #include <windows.h>
      9 
     10 #ifdef UNDER_CE
     11   #undef VARIANT_TRUE
     12   #define VARIANT_TRUE ((VARIANT_BOOL)-1)
     13 #endif
     14 
     15 #else
     16 
     17 #include <stddef.h> // for wchar_t
     18 #include <string.h>
     19 // #include <stdint.h> // for uintptr_t
     20 
     21 #include "MyGuidDef.h"
     22 
     23 #define WINAPI
     24 
     25 typedef char CHAR;
     26 typedef unsigned char UCHAR;
     27 
     28 #undef BYTE
     29 typedef unsigned char BYTE;
     30 
     31 typedef short SHORT;
     32 typedef unsigned short USHORT;
     33 
     34 #undef WORD
     35 typedef unsigned short WORD;
     36 typedef short VARIANT_BOOL;
     37 
     38 typedef int INT;
     39 typedef Int32 INT32;
     40 typedef unsigned int UINT;
     41 typedef UInt32 UINT32;
     42 typedef INT32 LONG;   // LONG, ULONG and DWORD must be 32-bit
     43 typedef UINT32 ULONG;
     44 
     45 #undef DWORD
     46 typedef UINT32 DWORD;
     47 
     48 typedef long BOOL;
     49 
     50 #ifndef FALSE
     51   #define FALSE 0
     52   #define TRUE 1
     53 #endif
     54 
     55 // typedef size_t ULONG_PTR;
     56 typedef size_t DWORD_PTR;
     57 // typedef uintptr_t UINT_PTR;
     58 // typedef ptrdiff_t UINT_PTR;
     59 
     60 typedef Int64 LONGLONG;
     61 typedef UInt64 ULONGLONG;
     62 
     63 typedef struct _LARGE_INTEGER { LONGLONG QuadPart; } LARGE_INTEGER;
     64 typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart; } ULARGE_INTEGER;
     65 
     66 typedef const CHAR *LPCSTR;
     67 typedef CHAR TCHAR;
     68 typedef const TCHAR *LPCTSTR;
     69 typedef wchar_t WCHAR;
     70 typedef WCHAR OLECHAR;
     71 typedef const WCHAR *LPCWSTR;
     72 typedef OLECHAR *BSTR;
     73 typedef const OLECHAR *LPCOLESTR;
     74 typedef OLECHAR *LPOLESTR;
     75 
     76 typedef struct _FILETIME
     77 {
     78   DWORD dwLowDateTime;
     79   DWORD dwHighDateTime;
     80 } FILETIME;
     81 
     82 #define HRESULT LONG
     83 #define FAILED(Status) ((HRESULT)(Status)<0)
     84 typedef ULONG PROPID;
     85 typedef LONG SCODE;
     86 
     87 #define ERROR_NEGATIVE_SEEK 131L
     88 
     89 #define S_OK    ((HRESULT)0x00000000L)
     90 #define S_FALSE ((HRESULT)0x00000001L)
     91 #define E_NOTIMPL ((HRESULT)0x80004001L)
     92 #define E_NOINTERFACE ((HRESULT)0x80004002L)
     93 #define E_ABORT ((HRESULT)0x80004004L)
     94 #define E_FAIL ((HRESULT)0x80004005L)
     95 #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
     96 #define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
     97 #define E_INVALIDARG ((HRESULT)0x80070057L)
     98 
     99 #ifdef _MSC_VER
    100 #define STDMETHODCALLTYPE __stdcall
    101 #else
    102 #define STDMETHODCALLTYPE
    103 #endif
    104 
    105 #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
    106 #define STDMETHOD(f) STDMETHOD_(HRESULT, f)
    107 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
    108 #define STDMETHODIMP STDMETHODIMP_(HRESULT)
    109 
    110 #define PURE = 0
    111 
    112 #define MIDL_INTERFACE(x) struct
    113 
    114 #ifdef __cplusplus
    115 
    116 DEFINE_GUID(IID_IUnknown,
    117 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
    118 struct IUnknown
    119 {
    120   STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
    121   STDMETHOD_(ULONG, AddRef)() PURE;
    122   STDMETHOD_(ULONG, Release)() PURE;
    123   #ifndef _WIN32
    124   virtual ~IUnknown() {}
    125   #endif
    126 };
    127 
    128 typedef IUnknown *LPUNKNOWN;
    129 
    130 #endif
    131 
    132 #define VARIANT_TRUE ((VARIANT_BOOL)-1)
    133 #define VARIANT_FALSE ((VARIANT_BOOL)0)
    134 
    135 enum VARENUM
    136 {
    137   VT_EMPTY = 0,
    138   VT_NULL = 1,
    139   VT_I2 = 2,
    140   VT_I4 = 3,
    141   VT_R4 = 4,
    142   VT_R8 = 5,
    143   VT_CY = 6,
    144   VT_DATE = 7,
    145   VT_BSTR = 8,
    146   VT_DISPATCH = 9,
    147   VT_ERROR = 10,
    148   VT_BOOL = 11,
    149   VT_VARIANT = 12,
    150   VT_UNKNOWN = 13,
    151   VT_DECIMAL = 14,
    152   VT_I1 = 16,
    153   VT_UI1 = 17,
    154   VT_UI2 = 18,
    155   VT_UI4 = 19,
    156   VT_I8 = 20,
    157   VT_UI8 = 21,
    158   VT_INT = 22,
    159   VT_UINT = 23,
    160   VT_VOID = 24,
    161   VT_HRESULT = 25,
    162   VT_FILETIME = 64
    163 };
    164 
    165 typedef unsigned short VARTYPE;
    166 typedef WORD PROPVAR_PAD1;
    167 typedef WORD PROPVAR_PAD2;
    168 typedef WORD PROPVAR_PAD3;
    169 
    170 typedef struct tagPROPVARIANT
    171 {
    172   VARTYPE vt;
    173   PROPVAR_PAD1 wReserved1;
    174   PROPVAR_PAD2 wReserved2;
    175   PROPVAR_PAD3 wReserved3;
    176   union
    177   {
    178     CHAR cVal;
    179     UCHAR bVal;
    180     SHORT iVal;
    181     USHORT uiVal;
    182     LONG lVal;
    183     ULONG ulVal;
    184     INT intVal;
    185     UINT uintVal;
    186     LARGE_INTEGER hVal;
    187     ULARGE_INTEGER uhVal;
    188     VARIANT_BOOL boolVal;
    189     SCODE scode;
    190     FILETIME filetime;
    191     BSTR bstrVal;
    192   };
    193 } PROPVARIANT;
    194 
    195 typedef PROPVARIANT tagVARIANT;
    196 typedef tagVARIANT VARIANT;
    197 typedef VARIANT VARIANTARG;
    198 
    199 MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
    200 MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src);
    201 
    202 typedef struct tagSTATPROPSTG
    203 {
    204   LPOLESTR lpwstrName;
    205   PROPID propid;
    206   VARTYPE vt;
    207 } STATPROPSTG;
    208 
    209 MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
    210 MY_EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len);
    211 MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
    212 MY_EXTERN_C void SysFreeString(BSTR bstr);
    213 MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
    214 MY_EXTERN_C UINT SysStringLen(BSTR bstr);
    215 
    216 MY_EXTERN_C DWORD GetLastError();
    217 MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
    218 
    219 #define CP_ACP    0
    220 #define CP_OEMCP  1
    221 #define CP_UTF8   65001
    222 
    223 typedef enum tagSTREAM_SEEK
    224 {
    225   STREAM_SEEK_SET = 0,
    226   STREAM_SEEK_CUR = 1,
    227   STREAM_SEEK_END = 2
    228 } STREAM_SEEK;
    229 
    230 #endif
    231 #endif
    232