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) {