00001
00002
00003
00004
00005 #ifndef __MYWINDOWS_H
00006 #define __MYWINDOWS_H
00007
00008 #ifdef _WIN32
00009
00010 #include <windows.h>
00011
00012 #else
00013
00014 #include <stddef.h>
00015 #include <string.h>
00016
00017 #include "MyGuidDef.h"
00018
00019 typedef char CHAR;
00020 typedef unsigned char UCHAR;
00021 typedef unsigned char BYTE;
00022
00023 typedef short SHORT;
00024 typedef unsigned short USHORT;
00025 typedef unsigned short WORD;
00026 typedef short VARIANT_BOOL;
00027
00028 typedef int INT;
00029 typedef Int32 INT32;
00030 typedef unsigned int UINT;
00031 typedef UInt32 UINT32;
00032 typedef INT32 LONG;
00033 typedef UINT32 ULONG;
00034 typedef UINT32 DWORD;
00035
00036 typedef Int64 LONGLONG;
00037 typedef UInt64 ULONGLONG;
00038
00039 typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
00040 typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
00041
00042 typedef const CHAR *LPCSTR;
00043 typedef CHAR TCHAR;
00044 typedef const TCHAR *LPCTSTR;
00045 typedef wchar_t WCHAR;
00046 typedef WCHAR OLECHAR;
00047 typedef const WCHAR *LPCWSTR;
00048 typedef OLECHAR *BSTR;
00049 typedef const OLECHAR *LPCOLESTR;
00050 typedef OLECHAR *LPOLESTR;
00051
00052 typedef struct _FILETIME
00053 {
00054 DWORD dwLowDateTime;
00055 DWORD dwHighDateTime;
00056 }FILETIME;
00057
00058 #define HRESULT LONG
00059 #define FAILED(Status) ((HRESULT)(Status)<0)
00060 typedef ULONG PROPID;
00061 typedef LONG SCODE;
00062
00063 #define S_OK ((HRESULT)0x00000000L)
00064 #define S_FALSE ((HRESULT)0x00000001L)
00065 #define E_NOINTERFACE ((HRESULT)0x80004002L)
00066 #define E_ABORT ((HRESULT)0x80004004L)
00067 #define E_FAIL ((HRESULT)0x80004005L)
00068 #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
00069 #define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
00070 #define E_INVALIDARG ((HRESULT)0x80070057L)
00071
00072 #ifdef _MSC_VER
00073 #define STDMETHODCALLTYPE __stdcall
00074 #else
00075 #define STDMETHODCALLTYPE
00076 #endif
00077
00078 #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
00079 #define STDMETHOD(f) STDMETHOD_(HRESULT, f)
00080 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
00081 #define STDMETHODIMP STDMETHODIMP_(HRESULT)
00082
00083 #define PURE = 0
00084
00085 #define MIDL_INTERFACE(x) struct
00086
00087 struct IUnknown
00088 {
00089 STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
00090 STDMETHOD_(ULONG, AddRef)() PURE;
00091 STDMETHOD_(ULONG, Release)() PURE;
00092 };
00093
00094 typedef IUnknown *LPUNKNOWN;
00095
00096 #define VARIANT_TRUE ((VARIANT_BOOL)-1)
00097 #define VARIANT_FALSE ((VARIANT_BOOL)0)
00098
00099 enum VARENUM
00100 {
00101 VT_EMPTY = 0,
00102 VT_NULL = 1,
00103 VT_I2 = 2,
00104 VT_I4 = 3,
00105 VT_R4 = 4,
00106 VT_R8 = 5,
00107 VT_CY = 6,
00108 VT_DATE = 7,
00109 VT_BSTR = 8,
00110 VT_DISPATCH = 9,
00111 VT_ERROR = 10,
00112 VT_BOOL = 11,
00113 VT_VARIANT = 12,
00114 VT_UNKNOWN = 13,
00115 VT_DECIMAL = 14,
00116 VT_I1 = 16,
00117 VT_UI1 = 17,
00118 VT_UI2 = 18,
00119 VT_UI4 = 19,
00120 VT_I8 = 20,
00121 VT_UI8 = 21,
00122 VT_INT = 22,
00123 VT_UINT = 23,
00124 VT_VOID = 24,
00125 VT_HRESULT = 25,
00126 VT_FILETIME = 64
00127 };
00128
00129 typedef unsigned short VARTYPE;
00130 typedef WORD PROPVAR_PAD1;
00131 typedef WORD PROPVAR_PAD2;
00132 typedef WORD PROPVAR_PAD3;
00133
00134 typedef struct tagPROPVARIANT
00135 {
00136 VARTYPE vt;
00137 PROPVAR_PAD1 wReserved1;
00138 PROPVAR_PAD2 wReserved2;
00139 PROPVAR_PAD3 wReserved3;
00140 union
00141 {
00142 CHAR cVal;
00143 UCHAR bVal;
00144 SHORT iVal;
00145 USHORT uiVal;
00146 LONG lVal;
00147 ULONG ulVal;
00148 INT intVal;
00149 UINT uintVal;
00150 LARGE_INTEGER hVal;
00151 ULARGE_INTEGER uhVal;
00152 VARIANT_BOOL boolVal;
00153 SCODE scode;
00154 FILETIME filetime;
00155 BSTR bstrVal;
00156 };
00157 } PROPVARIANT;
00158
00159 typedef PROPVARIANT tagVARIANT;
00160 typedef tagVARIANT VARIANT;
00161 typedef VARIANT VARIANTARG;
00162
00163 MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
00164 MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
00165 MY_EXTERN_C void SysFreeString(BSTR bstr);
00166 MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
00167 MY_EXTERN_C UINT SysStringLen(BSTR bstr);
00168
00169 MY_EXTERN_C DWORD GetLastError();
00170 MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
00171 MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
00172 MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
00173
00174 #define CP_ACP 0
00175 #define CP_OEMCP 1
00176
00177 typedef enum tagSTREAM_SEEK
00178 {
00179 STREAM_SEEK_SET = 0,
00180 STREAM_SEEK_CUR = 1,
00181 STREAM_SEEK_END = 2
00182 } STREAM_SEEK;
00183
00184 #endif
00185 #endif