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 ~IUnknownIUnknown109 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