MyWindows.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. // MyWindows.h
  2. #ifndef __MYWINDOWS_H
  3. #define __MYWINDOWS_H
  4. #ifdef _WIN32
  5. #include <windows.h>
  6. #define CHAR_PATH_SEPARATOR '\\'
  7. #define WCHAR_PATH_SEPARATOR L'\\'
  8. #define STRING_PATH_SEPARATOR "\\"
  9. #define WSTRING_PATH_SEPARATOR L"\\"
  10. #else
  11. #define CHAR_PATH_SEPARATOR '/'
  12. #define WCHAR_PATH_SEPARATOR L'/'
  13. #define STRING_PATH_SEPARATOR "/"
  14. #define WSTRING_PATH_SEPARATOR L"/"
  15. #include <stddef.h> // for wchar_t
  16. #include <string.h>
  17. #include "MyGuidDef.h"
  18. typedef char CHAR;
  19. typedef unsigned char UCHAR;
  20. #undef BYTE
  21. typedef unsigned char BYTE;
  22. typedef short SHORT;
  23. typedef unsigned short USHORT;
  24. #undef WORD
  25. typedef unsigned short WORD;
  26. typedef short VARIANT_BOOL;
  27. typedef int INT;
  28. typedef Int32 INT32;
  29. typedef unsigned int UINT;
  30. typedef UInt32 UINT32;
  31. typedef INT32 LONG; // LONG, ULONG and DWORD must be 32-bit
  32. typedef UINT32 ULONG;
  33. #undef DWORD
  34. typedef UINT32 DWORD;
  35. typedef Int64 LONGLONG;
  36. typedef UInt64 ULONGLONG;
  37. typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
  38. typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
  39. typedef const CHAR *LPCSTR;
  40. typedef CHAR TCHAR;
  41. typedef const TCHAR *LPCTSTR;
  42. typedef wchar_t WCHAR;
  43. typedef WCHAR OLECHAR;
  44. typedef const WCHAR *LPCWSTR;
  45. typedef OLECHAR *BSTR;
  46. typedef const OLECHAR *LPCOLESTR;
  47. typedef OLECHAR *LPOLESTR;
  48. typedef struct _FILETIME
  49. {
  50. DWORD dwLowDateTime;
  51. DWORD dwHighDateTime;
  52. }FILETIME;
  53. #define HRESULT LONG
  54. #define FAILED(Status) ((HRESULT)(Status)<0)
  55. typedef ULONG PROPID;
  56. typedef LONG SCODE;
  57. #define S_OK ((HRESULT)0x00000000L)
  58. #define S_FALSE ((HRESULT)0x00000001L)
  59. #define E_NOTIMPL ((HRESULT)0x80004001L)
  60. #define E_NOINTERFACE ((HRESULT)0x80004002L)
  61. #define E_ABORT ((HRESULT)0x80004004L)
  62. #define E_FAIL ((HRESULT)0x80004005L)
  63. #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
  64. #define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
  65. #define E_INVALIDARG ((HRESULT)0x80070057L)
  66. #ifdef _MSC_VER
  67. #define STDMETHODCALLTYPE __stdcall
  68. #else
  69. #define STDMETHODCALLTYPE
  70. #endif
  71. #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
  72. #define STDMETHOD(f) STDMETHOD_(HRESULT, f)
  73. #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
  74. #define STDMETHODIMP STDMETHODIMP_(HRESULT)
  75. #define PURE = 0
  76. #define MIDL_INTERFACE(x) struct
  77. #ifdef __cplusplus
  78. DEFINE_GUID(IID_IUnknown,
  79. 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
  80. struct IUnknown
  81. {
  82. STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
  83. STDMETHOD_(ULONG, AddRef)() PURE;
  84. STDMETHOD_(ULONG, Release)() PURE;
  85. #ifndef _WIN32
  86. virtual ~IUnknown() {}
  87. #endif
  88. };
  89. typedef IUnknown *LPUNKNOWN;
  90. #endif
  91. #define VARIANT_TRUE ((VARIANT_BOOL)-1)
  92. #define VARIANT_FALSE ((VARIANT_BOOL)0)
  93. enum VARENUM
  94. {
  95. VT_EMPTY = 0,
  96. VT_NULL = 1,
  97. VT_I2 = 2,
  98. VT_I4 = 3,
  99. VT_R4 = 4,
  100. VT_R8 = 5,
  101. VT_CY = 6,
  102. VT_DATE = 7,
  103. VT_BSTR = 8,
  104. VT_DISPATCH = 9,
  105. VT_ERROR = 10,
  106. VT_BOOL = 11,
  107. VT_VARIANT = 12,
  108. VT_UNKNOWN = 13,
  109. VT_DECIMAL = 14,
  110. VT_I1 = 16,
  111. VT_UI1 = 17,
  112. VT_UI2 = 18,
  113. VT_UI4 = 19,
  114. VT_I8 = 20,
  115. VT_UI8 = 21,
  116. VT_INT = 22,
  117. VT_UINT = 23,
  118. VT_VOID = 24,
  119. VT_HRESULT = 25,
  120. VT_FILETIME = 64
  121. };
  122. typedef unsigned short VARTYPE;
  123. typedef WORD PROPVAR_PAD1;
  124. typedef WORD PROPVAR_PAD2;
  125. typedef WORD PROPVAR_PAD3;
  126. #ifdef __cplusplus
  127. typedef struct tagPROPVARIANT
  128. {
  129. VARTYPE vt;
  130. PROPVAR_PAD1 wReserved1;
  131. PROPVAR_PAD2 wReserved2;
  132. PROPVAR_PAD3 wReserved3;
  133. union
  134. {
  135. CHAR cVal;
  136. UCHAR bVal;
  137. SHORT iVal;
  138. USHORT uiVal;
  139. LONG lVal;
  140. ULONG ulVal;
  141. INT intVal;
  142. UINT uintVal;
  143. LARGE_INTEGER hVal;
  144. ULARGE_INTEGER uhVal;
  145. VARIANT_BOOL boolVal;
  146. SCODE scode;
  147. FILETIME filetime;
  148. BSTR bstrVal;
  149. };
  150. } PROPVARIANT;
  151. typedef PROPVARIANT tagVARIANT;
  152. typedef tagVARIANT VARIANT;
  153. typedef VARIANT VARIANTARG;
  154. MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
  155. MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
  156. #endif
  157. MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
  158. MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
  159. MY_EXTERN_C void SysFreeString(BSTR bstr);
  160. MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
  161. MY_EXTERN_C UINT SysStringLen(BSTR bstr);
  162. MY_EXTERN_C DWORD GetLastError();
  163. MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
  164. #define CP_ACP 0
  165. #define CP_OEMCP 1
  166. typedef enum tagSTREAM_SEEK
  167. {
  168. STREAM_SEEK_SET = 0,
  169. STREAM_SEEK_CUR = 1,
  170. STREAM_SEEK_END = 2
  171. } STREAM_SEEK;
  172. #endif
  173. #endif