1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 7 * Source: $(DRUNTIMESRC core/sys/windows/_wtypes.d) 8 */ 9 module nulib.system.win32.wtypes; 10 import nulib.system.win32.rpc, nulib.system.win32.rpcndr; 11 import nulib.system.win32.windef; 12 public import nulib.system.com; 13 14 enum ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; 15 enum ROTFLAGS_ALLOWANYCLIENT = 0x02; 16 17 // also in winsock2.h 18 struct BLOB { 19 ULONG cbSize; 20 BYTE* pBlobData; 21 } 22 alias BLOB* PBLOB, LPBLOB; 23 24 enum DVASPECT { 25 DVASPECT_CONTENT = 1, 26 DVASPECT_THUMBNAIL = 2, 27 DVASPECT_ICON = 4, 28 DVASPECT_DOCPRINT = 8 29 } 30 31 enum DVASPECT2 { 32 DVASPECT_OPAQUE = 16, 33 DVASPECT_TRANSPARENT = 32 34 } 35 36 enum STATFLAG { 37 STATFLAG_DEFAULT = 0, 38 STATFLAG_NONAME = 1 39 } 40 41 enum MEMCTX { 42 MEMCTX_LOCAL = 0, 43 MEMCTX_TASK, 44 MEMCTX_SHARED, 45 MEMCTX_MACSYSTEM, 46 MEMCTX_UNKNOWN = -1, 47 MEMCTX_SAME = -2 48 } 49 50 enum MSHCTX { 51 MSHCTX_LOCAL = 0, 52 MSHCTX_NOSHAREDMEM, 53 MSHCTX_DIFFERENTMACHINE, 54 MSHCTX_INPROC, 55 MSHCTX_CROSSCTX 56 } 57 58 enum CLSCTX { 59 CLSCTX_INPROC_SERVER = 0x1, 60 CLSCTX_INPROC_HANDLER = 0x2, 61 CLSCTX_LOCAL_SERVER = 0x4, 62 CLSCTX_INPROC_SERVER16 = 0x8, 63 CLSCTX_REMOTE_SERVER = 0x10, 64 CLSCTX_INPROC_HANDLER16 = 0x20, 65 CLSCTX_INPROC_SERVERX86 = 0x40, 66 CLSCTX_INPROC_HANDLERX86 = 0x80, 67 } 68 69 enum MSHLFLAGS { 70 MSHLFLAGS_NORMAL, 71 MSHLFLAGS_TABLESTRONG, 72 MSHLFLAGS_TABLEWEAK 73 } 74 75 struct FLAGGED_WORD_BLOB { 76 uint fFlags; 77 uint clSize; 78 ushort[1] asData; 79 } 80 81 alias OLECHAR = WCHAR; 82 alias LPOLESTR = LPWSTR; 83 alias LPCOLESTR = LPCWSTR; 84 85 alias VARTYPE = ushort; 86 alias VARIANT_BOOL = short; 87 alias _VARIANT_BOOL = VARIANT_BOOL; 88 enum VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; 89 enum VARIANT_BOOL VARIANT_FALSE = 0; 90 91 alias BSTR = OLECHAR*; 92 alias wireBSTR = FLAGGED_WORD_BLOB*; 93 alias LPBSTR = BSTR*; 94 //alias SCODE = LONG; // also in winerror 95 alias HCONTEXT = HANDLE; 96 alias HMETAFILEPICT = HANDLE; 97 98 union CY { 99 struct { 100 uint Lo; 101 int Hi; 102 } 103 LONGLONG int64; 104 } 105 106 alias DATE = double; 107 struct BSTRBLOB { 108 ULONG cbSize; 109 PBYTE pData; 110 } 111 alias LPBSTRBLOB = BSTRBLOB*; 112 113 // Used only in the PROPVARIANT structure 114 // According to the 2003 SDK, this should be in propidl.h, not here. 115 struct CLIPDATA { 116 ULONG cbSize; 117 int ulClipFmt; 118 PBYTE pClipData; 119 } 120 121 enum STGC { 122 STGC_DEFAULT, 123 STGC_OVERWRITE, 124 STGC_ONLYIFCURRENT, 125 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 126 } 127 128 enum STGMOVE { 129 STGMOVE_MOVE, 130 STGMOVE_COPY, 131 STGMOVE_SHALLOWCOPY 132 } 133 134 enum VARENUM { 135 VT_EMPTY, 136 VT_NULL, 137 VT_I2, 138 VT_I4, 139 VT_R4, 140 VT_R8, 141 VT_CY, 142 VT_DATE, 143 VT_BSTR, 144 VT_DISPATCH, 145 VT_ERROR, 146 VT_BOOL, 147 VT_VARIANT, 148 VT_UNKNOWN, 149 VT_DECIMAL, 150 VT_I1 = 16, 151 VT_UI1, 152 VT_UI2, 153 VT_UI4, 154 VT_I8, 155 VT_UI8, 156 VT_INT, 157 VT_UINT, 158 VT_VOID, 159 VT_HRESULT, 160 VT_PTR, 161 VT_SAFEARRAY, 162 VT_CARRAY, 163 VT_USERDEFINED, 164 VT_LPSTR, 165 VT_LPWSTR, 166 VT_RECORD = 36, 167 VT_INT_PTR = 37, 168 VT_UINT_PTR = 38, 169 VT_FILETIME = 64, 170 VT_BLOB, 171 VT_STREAM, 172 VT_STORAGE, 173 VT_STREAMED_OBJECT, 174 VT_STORED_OBJECT, 175 VT_BLOB_OBJECT, 176 VT_CF, 177 VT_CLSID, 178 VT_BSTR_BLOB = 0xfff, 179 VT_VECTOR = 0x1000, 180 VT_ARRAY = 0x2000, 181 VT_BYREF = 0x4000, 182 VT_RESERVED = 0x8000, 183 VT_ILLEGAL = 0xffff, 184 VT_ILLEGALMASKED = 0xfff, 185 VT_TYPEMASK = 0xfff 186 } 187 188 struct BYTE_SIZEDARR { 189 uint clSize; 190 byte* pData; 191 } 192 193 struct WORD_SIZEDARR { 194 uint clSize; 195 ushort* pData; 196 } 197 198 struct DWORD_SIZEDARR { 199 uint clSize; 200 uint* pData; 201 } 202 203 struct HYPER_SIZEDARR { 204 uint clSize; 205 hyper* pData; 206 } 207 208 alias DOUBLE = double; 209 210 211 struct DECIMAL { 212 USHORT wReserved; 213 union { 214 struct { 215 ubyte scale; // valid values are 0 to 28 216 ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. 217 enum ubyte DECIMAL_NEG = 0x80; 218 } 219 USHORT signscale; 220 } 221 ULONG Hi32; 222 union { 223 struct { 224 ULONG Lo32; 225 ULONG Mid32; 226 } 227 ULONGLONG Lo64; 228 } 229 // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} 230 void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } 231 }