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 24typedef char CHAR; 25typedef unsigned char UCHAR; 26 27#undef BYTE 28typedef unsigned char BYTE; 29 30typedef short SHORT; 31typedef unsigned short USHORT; 32 33#undef WORD 34typedef unsigned short WORD; 35typedef short VARIANT_BOOL; 36 37typedef int INT; 38typedef Int32 INT32; 39typedef unsigned int UINT; 40typedef UInt32 UINT32; 41typedef INT32 LONG; // LONG, ULONG and DWORD must be 32-bit 42typedef UINT32 ULONG; 43 44#undef DWORD 45typedef UINT32 DWORD; 46 47typedef Int64 LONGLONG; 48typedef UInt64 ULONGLONG; 49 50typedef struct _LARGE_INTEGER { LONGLONG QuadPart; } LARGE_INTEGER; 51typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart; } ULARGE_INTEGER; 52 53typedef const CHAR *LPCSTR; 54typedef CHAR TCHAR; 55typedef const TCHAR *LPCTSTR; 56typedef wchar_t WCHAR; 57typedef WCHAR OLECHAR; 58typedef const WCHAR *LPCWSTR; 59typedef OLECHAR *BSTR; 60typedef const OLECHAR *LPCOLESTR; 61typedef OLECHAR *LPOLESTR; 62 63typedef struct _FILETIME 64{ 65 DWORD dwLowDateTime; 66 DWORD dwHighDateTime; 67} FILETIME; 68 69#define HRESULT LONG 70#define FAILED(Status) ((HRESULT)(Status)<0) 71typedef ULONG PROPID; 72typedef 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 101DEFINE_GUID(IID_IUnknown, 1020x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); 103struct 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 113typedef IUnknown *LPUNKNOWN; 114 115#endif 116 117#define VARIANT_TRUE ((VARIANT_BOOL)-1) 118#define VARIANT_FALSE ((VARIANT_BOOL)0) 119 120enum 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 150typedef unsigned short VARTYPE; 151typedef WORD PROPVAR_PAD1; 152typedef WORD PROPVAR_PAD2; 153typedef WORD PROPVAR_PAD3; 154 155typedef 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 180typedef PROPVARIANT tagVARIANT; 181typedef tagVARIANT VARIANT; 182typedef VARIANT VARIANTARG; 183 184MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop); 185MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, const VARIANTARG *src); 186 187typedef struct tagSTATPROPSTG 188{ 189 LPOLESTR lpwstrName; 190 PROPID propid; 191 VARTYPE vt; 192} STATPROPSTG; 193 194MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len); 195MY_EXTERN_C BSTR SysAllocStringLen(const OLECHAR *sz, UINT len); 196MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz); 197MY_EXTERN_C void SysFreeString(BSTR bstr); 198MY_EXTERN_C UINT SysStringByteLen(BSTR bstr); 199MY_EXTERN_C UINT SysStringLen(BSTR bstr); 200 201MY_EXTERN_C DWORD GetLastError(); 202MY_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 208typedef 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