Mercurial > projects > dwt-win
comparison dwt/ole/win32/OleAutomation.d @ 284:bb89fd34ec82
Fix for OLE functionality. Thanks to Enzo Petrelli
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 20 Aug 2008 15:20:55 +0200 |
parents | fd9c62a2998e |
children |
comparison
equal
deleted
inserted
replaced
282:92e785261f30 | 284:bb89fd34ec82 |
---|---|
258 data.args[i] = new OleParameterDescription(); | 258 data.args[i] = new OleParameterDescription(); |
259 if (names.length > i + 1) { | 259 if (names.length > i + 1) { |
260 data.args[i].name = names[i + 1]; | 260 data.args[i].name = names[i + 1]; |
261 } | 261 } |
262 short[1] vt; | 262 short[1] vt; |
263 COM.MoveMemory(vt.ptr, funcdesc.lprgelemdescParam + i * 16 + 4, 2); | 263 COM.MoveMemory(vt.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16 + 4, 2); |
264 if (vt[0] is OLE.VT_PTR) { | 264 if (vt[0] is OLE.VT_PTR) { |
265 int[1] pTypedesc; | 265 int[1] pTypedesc; |
266 COM.MoveMemory(pTypedesc.ptr, funcdesc.lprgelemdescParam + i * 16, 4); | 266 COM.MoveMemory(pTypedesc.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16, 4); |
267 short[1] vt2; | 267 short[1] vt2; |
268 COM.MoveMemory(vt2.ptr, pTypedesc[0] + 4, 2); | 268 COM.MoveMemory(vt2.ptr, pTypedesc[0] + 4, 2); |
269 vt[0] = cast(short)(vt2[0] | COM.VT_BYREF); | 269 vt[0] = cast(short)(vt2[0] | COM.VT_BYREF); |
270 } | 270 } |
271 data.args[i].type = vt[0]; | 271 data.args[i].type = vt[0]; |
272 short[1] wParamFlags; | 272 short[1] wParamFlags; |
273 COM.MoveMemory(wParamFlags.ptr, funcdesc.lprgelemdescParam + i * 16 + 12, 2); | 273 COM.MoveMemory(wParamFlags.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16 + 12, 2); |
274 data.args[i].flags = wParamFlags[0]; | 274 data.args[i].flags = wParamFlags[0]; |
275 } | 275 } |
276 | 276 |
277 data.returnType = funcdesc.elemdescFunc.tdesc.vt; | 277 data.returnType = funcdesc.elemdescFunc.tdesc.vt; |
278 if (data.returnType is OLE.VT_PTR) { | 278 if (data.returnType is OLE.VT_PTR) { |