public void InsertControl(AddressMeta item) { if (item == null) return; Guid guid = Marshal.GenerateGuidForType(item.GetType()); ILockBytes pLockBytes; OLE32.CreateILockBytesOnHGlobal(IntPtr.Zero, true, out pLockBytes); IStorage pStorage; OLE32.StgCreateDocfileOnILockBytes(pLockBytes, (uint)(STGM.STGM_SHARE_EXCLUSIVE | STGM.STGM_CREATE | STGM.STGM_READWRITE), 0, out pStorage); IOleClientSite pOleClientSite; RichEditOle.GetClientSite(out pOleClientSite); REOBJECT reObj = new REOBJECT(); reObj.cp = recipient.TextLength; reObj.clsid = guid; reObj.pstg = pStorage; reObj.poleobj = Marshal.GetIUnknownForObject(item); reObj.polesite = pOleClientSite; reObj.dvAspect = (uint)(DVASPECT.DVASPECT_CONTENT); reObj.dwFlags = (uint)(REOOBJECTFLAGS.REO_BELOWBASELINE); reObj.dwUser = (uint)item.ID; RichEditOle.InsertObject(reObj); Marshal.ReleaseComObject(pLockBytes); Marshal.ReleaseComObject(pOleClientSite); Marshal.ReleaseComObject(pStorage); }
public void AppendAddressMeta(AddressMeta meta) { if (meta.IsValid) { meta.ID = innerList.Count; innerList[meta.ID] = meta; InsertControl(meta); } }
private void InsertControl(AddressMeta item) { helper.InsertControl(item); }