| // MyWindows.h |
| |
| #ifndef __MYWINDOWS_H |
| #define __MYWINDOWS_H |
| |
| #ifdef _WIN32 |
| |
| #include <windows.h> |
| |
| #define CHAR_PATH_SEPARATOR '\\' |
| #define WCHAR_PATH_SEPARATOR L'\\' |
| #define STRING_PATH_SEPARATOR "\\" |
| #define WSTRING_PATH_SEPARATOR L"\\" |
| |
| #else |
| |
| #define CHAR_PATH_SEPARATOR '/' |
| #define WCHAR_PATH_SEPARATOR L'/' |
| #define STRING_PATH_SEPARATOR "/" |
| #define WSTRING_PATH_SEPARATOR L"/" |
| |
| #include <stddef.h> // for wchar_t |
| #include <string.h> |
| |
| #include "MyGuidDef.h" |
| |
| typedef char CHAR; |
| typedef unsigned char UCHAR; |
| |
| #undef BYTE |
| typedef unsigned char BYTE; |
| |
| typedef short SHORT; |
| typedef unsigned short USHORT; |
| |
| #undef WORD |
| typedef unsigned short WORD; |
| typedef short VARIANT_BOOL; |
| |
| typedef int INT; |
| typedef Int32 INT32; |
| typedef unsigned int UINT; |
| typedef UInt32 UINT32; |
| typedef INT32 LONG; // LONG, ULONG and DWORD must be 32-bit |
| typedef UINT32 ULONG; |
| |
| #undef DWORD |
| typedef UINT32 DWORD; |
| |
| typedef Int64 LONGLONG; |
| typedef UInt64 ULONGLONG; |
| |
| typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER; |
| typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER; |
| |
| typedef const CHAR *LPCSTR; |
| typedef CHAR TCHAR; |
| typedef const TCHAR *LPCTSTR; |
| typedef wchar_t WCHAR; |
| typedef WCHAR OLECHAR; |
| typedef const WCHAR *LPCWSTR; |
| typedef OLECHAR *BSTR; |
| typedef const OLECHAR *LPCOLESTR; |
| typedef OLECHAR *LPOLESTR; |
| |
| typedef struct _FILETIME |
| { |
| DWORD dwLowDateTime; |
| DWORD dwHighDateTime; |
| }FILETIME; |
| |
| #define HRESULT LONG |
| #define FAILED(Status) ((HRESULT)(Status)<0) |
| typedef ULONG PROPID; |
| typedef LONG SCODE; |
| |
| #define S_OK ((HRESULT)0x00000000L) |
| #define S_FALSE ((HRESULT)0x00000001L) |
| #define E_NOTIMPL ((HRESULT)0x80004001L) |
| #define E_NOINTERFACE ((HRESULT)0x80004002L) |
| #define E_ABORT ((HRESULT)0x80004004L) |
| #define E_FAIL ((HRESULT)0x80004005L) |
| #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L) |
| #define E_OUTOFMEMORY ((HRESULT)0x8007000EL) |
| #define E_INVALIDARG ((HRESULT)0x80070057L) |
| |
| #ifdef _MSC_VER |
| #define STDMETHODCALLTYPE __stdcall |
| #else |
| #define STDMETHODCALLTYPE |
| #endif |
| |
| #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f |
| #define STDMETHOD(f) STDMETHOD_(HRESULT, f) |
| #define STDMETHODIMP_(type) type STDMETHODCALLTYPE |
| #define STDMETHODIMP STDMETHODIMP_(HRESULT) |
| |
| #define PURE = 0 |
| |
| #define MIDL_INTERFACE(x) struct |
| |
| struct IUnknown |
| { |
| //virtual ~IUnknown() {} |
| STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE; |
| STDMETHOD_(ULONG, AddRef)() PURE; |
| STDMETHOD_(ULONG, Release)() PURE; |
| }; |
| |
| typedef IUnknown *LPUNKNOWN; |
| |
| #define VARIANT_TRUE ((VARIANT_BOOL)-1) |
| #define VARIANT_FALSE ((VARIANT_BOOL)0) |
| |
| enum VARENUM |
| { |
| VT_EMPTY = 0, |
| VT_NULL = 1, |
| VT_I2 = 2, |
| VT_I4 = 3, |
| VT_R4 = 4, |
| VT_R8 = 5, |
| VT_CY = 6, |
| VT_DATE = 7, |
| VT_BSTR = 8, |
| VT_DISPATCH = 9, |
| VT_ERROR = 10, |
| VT_BOOL = 11, |
| VT_VARIANT = 12, |
| VT_UNKNOWN = 13, |
| VT_DECIMAL = 14, |
| VT_I1 = 16, |
| VT_UI1 = 17, |
| VT_UI2 = 18, |
| VT_UI4 = 19, |
| VT_I8 = 20, |
| VT_UI8 = 21, |
| VT_INT = 22, |
| VT_UINT = 23, |
| VT_VOID = 24, |
| VT_HRESULT = 25, |
| VT_FILETIME = 64 |
| }; |
| |
| typedef unsigned short VARTYPE; |
| typedef WORD PROPVAR_PAD1; |
| typedef WORD PROPVAR_PAD2; |
| typedef WORD PROPVAR_PAD3; |
| |
| typedef struct tagPROPVARIANT |
| { |
| VARTYPE vt; |
| PROPVAR_PAD1 wReserved1; |
| PROPVAR_PAD2 wReserved2; |
| PROPVAR_PAD3 wReserved3; |
| union |
| { |
| CHAR cVal; |
| UCHAR bVal; |
| SHORT iVal; |
| USHORT uiVal; |
| LONG lVal; |
| ULONG ulVal; |
| INT intVal; |
| UINT uintVal; |
| LARGE_INTEGER hVal; |
| ULARGE_INTEGER uhVal; |
| VARIANT_BOOL boolVal; |
| SCODE scode; |
| FILETIME filetime; |
| BSTR bstrVal; |
| }; |
| } PROPVARIANT; |
| |
| typedef PROPVARIANT tagVARIANT; |
| typedef tagVARIANT VARIANT; |
| typedef VARIANT VARIANTARG; |
| |
| MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len); |
| MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz); |
| MY_EXTERN_C void SysFreeString(BSTR bstr); |
| MY_EXTERN_C UINT SysStringByteLen(BSTR bstr); |
| MY_EXTERN_C UINT SysStringLen(BSTR bstr); |
| |
| MY_EXTERN_C DWORD GetLastError(); |
| MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop); |
| MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src); |
| MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2); |
| |
| #define CP_ACP 0 |
| #define CP_OEMCP 1 |
| |
| typedef enum tagSTREAM_SEEK |
| { |
| STREAM_SEEK_SET = 0, |
| STREAM_SEEK_CUR = 1, |
| STREAM_SEEK_END = 2 |
| } STREAM_SEEK; |
| |
| #endif |
| #endif |