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