描述:
本人想为excel做一个电子签章,首先做了一个excel插件,然后想再做一个显示图形签章的activex控件。考虑到做签章函数,我是用vc做的。插件我是用ATL编写的一个COM组件,可是在excel.tlh和excel.tli中出现了好多难于应用的成员。如:AddOleObject()是Ishapes的成员函数,而Ishapes怎么实例化?调用AddOleObject()能否将activex控件嵌入进来?
着急,谢谢了。
这部分的代码是这样的,希望高手看了能帮我解决一下。
USES_CONVERSION;
ATLASSERT(m_spApp);
CComPtr <Excel::_Workbook> m_wbMyBook;
CComPtr <Excel::_Worksheet> m_wsMysheet;
CComPtr<Excel::Shapes> m_shapes;
CComPtr<Excel::IShapes> m_ishapes;
m_spApp->get_ActiveWorkbook(&m_wbMyBook);
ATLASSERT(m_wbMyBook);
m_wbMyBook->get_ActiveSheet((LPDISPATCH *) &m_wsMysheet);
ATLASSERT(m_wsMysheet);
m_wsMysheet->get_Shapes(&m_shapes);
ATLASSERT(m_shapes);
//m_wsMysheet->get_Shapes((Shapes* *)(LPDISPATCH *)&m_ishapes);//这句有错误
//就是在这里m_ishapes需要实例化,可是我没有找到方法。。。。。。。
ATLASSERT(m_ishapes);
COleVariant ClassType("EXCELACTIVEX.ExcelActiveXCtrl.1");
HRESULT hr = m_ishapes->AddOLEObject(ClassType,NULL, false,false,NULL,0,NULL,0,0,0,0,&m_shapes);