描述:
我想做一个ocx控建,功能就类似word,我看了一些控件,并且看了一些录制宏的代码,
发现实现功能的函数基本上都在msword9.olb中。
我是这样做的,我把msword9.olb通过classwizard导入我的程序,得到几十个类,然后在控件
中定义method(好像只有这种函数能发布出来),在method中通过msword9.olb中的类的对象调用
相应类中的函数。没有有编译错误。但是用一个应用程序调用这个函数时,看不到结果。
这是为什么?难道msword9.olb 中的类,函数是空的(530多kb)。
还是应用的方法不对呢?
比方说:word宏中有一个ActiveDocument.Shapes.AddShape(msoShapeRectangle, 171#, 126.6, 261#, _ 93.6).Select 用于画一个矩形。而msword9.olb中也有一个SetAvoidRectangle函数在balloon类中,
Balloon bal;
bal.SetAvoidRectangle(参数);编译无误。
控建发布后,调用控件看不到结果???????
解决方案1:
应用方法不对啊。一般操作word的方法如下,例如:
打开文档的代码:
BOOL CWordApp::Open()
{
HRESULT hr;
hr=m_spApp.CreateInstance ("Word.Application");
if(FAILED(hr))
{
printf("\nCreateInstance error:%d",hr);
return FALSE;
}
_bstr_t bstrFileName;
bstrFileName="c:\\test.doc";
_variant_t varFileName;
varFileName=bstrFileName;
Word::DocumentsPtr spDocs;
m_spApp->get_Documents (&spDocs);
VARIANT vt=vtMissing;
hr=spDocs->Open(&varFileName,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&vt,
&m_spDoc);
return true;
}
首先你要创建一个WordApplication对象,用它的CreateDispatch函数,指定"word.applicaton"然后一切对象都从它得到