我正在处理对 OLE 对象执行一些操作的 Add in To Excel。它需要从工作表中以编程方式嵌入的 OLE 对象中获取一些数据(从数学类型转换为 TeX 语言)。到目前为止,我已经处理了大部分问题,例如将其添加到 Excel 工作表、从 Math Type OLE 对象中获取方程并设置方程。但还有最后一件事要做。
我需要提取带有由数学类型 OLE 对象设置的方程的图像的元文件。我想提取图像并将其保存为内存位图,然后在某种控件中显示它。问题是 - 我有从 OLE 对象获取元文件的代码:
MTSDKDN.MathTypeSDK.IOleObject oleObject = null;
oleDataObject = dataObject as IDataObject;
oleObject = dataObject as MTSDKDN.MathTypeSDK.IOleObject;
ConnectFORMATETC formatEtc = new ConnectFORMATETC();
ConnectSTGMEDIUM stgMedium = new ConnectSTGMEDIUM();
DataFormats.Format dataFormat;
obj.Verb((Excel.XlOLEVerb)3);
dataObject = obj.Object;
formatEtc.cfFormat =(Int16)DataFormats.GetFormat(DataFormats.MetafilePict ).Id;
formatEtc.dwAspect = System.Runtime.InteropServices.ComTypes.DVASPECT.DVASPECT_CONTENT;
formatEtc.lindex = -1;
formatEtc.ptd = (IntPtr)0;
formatEtc.tymed = TYMED.TYMED_MFPICT;
stgMedium.unionmember=(IntPtr)0;
stgMedium.tymed=TYMED.TYMED_NULL;
stgMedium.pUnkForRelease=0;
oleDataObject.GetData(ref formatEtc,out stgMedium);
//from this point no idea what to do
IntPtr ptr;
ptr = stgMedium.unionmember;
HandleRef handleRef = new HandleRef(null, ptr);
IntPtr ptrToHandle = GlobalLock(handleRef);
int Length = GlobalSize(handleRef);
我不知道我是否在做正确的事情来获取元文件,最重要的是(假设可以通过这种方式获取元文件):如何管理元文件以将图像数据作为位图保存在加载项的内存中.
我会非常感谢你的回答。