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