////// 获取对象的选项 /// public enum GETOBJECTOPTIONS { ////// 选举事务处得到obj没有接口 /// REO_GETOBJ_NO_INTERFACES = 0x00000000, ////// 选举事务处得到的obj poleobj /// REO_GETOBJ_POLEOBJ = 0x00000001, ////// 研究 /// REO_GETOBJ_PSTG = 0x00000002, ////// 选举事务处得到的obj polesite /// REO_GETOBJ_POLESITE = 0x00000004, ////// 选举事务处得到的obj所有的接口 /// REO_GETOBJ_ALL_INTERFACES = 0x00000007, }
////// 如需向CRichEditCtrl里面插入Ole对象, /// /需要调用 GetIRichEditOle 获得此CRichEditCtrl的IRichEditOle接口 /// [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("00020D00-0000-0000-c000-000000000046")] public interface IRichEditOle { // 接口下面几个重要的方法 // InsertObject:插入一个对象到CRichEditCtrl // GetObject:返回一个CRichEditCtrl里面的REOBJECT对象 // ImportDataObject: 导入一个剪切板对象并替换当前选中内容 // GetClientSite:返回IOleClientSite接口用于创建新的对象。 // GetClipboardData:返回一个Clipboard对象。 ////// 返回 IOleClientSite 接口用于创建新的对象。 /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetClientSite(out IOleClientSite site); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetObjectCount(); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetLinkCount(); /// /// 返回一个CRichEditCtrl里面的REOBJECT对象 /// /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetObject(int iob, [In, Out] REOBJECT lpreobject, [MarshalAs(UnmanagedType.U4)] GETOBJECTOPTIONS flags); /// /// 插入一个对象到 CRichEditCtrl /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int InsertObject(REOBJECT lpreobject); /// /// 转换对象 /// /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ConvertObject(int iob, Guid rclsidNew, string lpstrUserTypeNew); /// /// 激活 /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ActivateAs(Guid rclsid, Guid rclsidAs); /// /// 设置主机名 /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetHostNames(string lpstrContainerApp, string lpstrContainerObj); /// /// 设置链接可用 /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetLinkAvailable(int iob, bool fAvailable); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SetDvaspect(int iob, uint dvaspect); [return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int HandsOffStorage(int iob); /// /// 保存完毕 /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int SaveCompleted(int iob, IStorage lpstg); /// /// 在关闭 /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int InPlaceDeactivate(); /// /// 上下文相关的帮助 /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ContextSensitiveHelp(bool fEnterMode); /// /// 获取剪贴板数据 返回一个 Clipboard 对象 /// /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int GetClipboardData([In, Out] ref CHARRANGE lpchrg, [MarshalAs(UnmanagedType.U4)] GETCLIPBOARDDATAFLAGS reco, out IDataObject lplpdataobj); /// /// 导入数据对象 导入一个剪切板对象并替换当前选中内容 /// /// /// /// ///[return: MarshalAs(UnmanagedType.I4)] [PreserveSig] int ImportDataObject(IDataObject lpdataobj, int cf, IntPtr hMetaPict); }