mfc打不开wordDWORD _stdcall ThreadFun(LPVOID p)
{CoInitialize(NULL);
CApplication objWordApp; //word对象
COleVariant ovTrue((short)TRUE); //true
COleVariant ovFalse((short)FALSE); //false
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //创建一个IDispatch指针
if (!objWordApp.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return -1;
}
objWordApp.put_Visible(FALSE); //显示应用程序
objWordApp.put_DisplayAlerts(FALSE); CDocuments docs(objWordApp.get_Documents()); //word文档 CDocument0 docPrint; //word文档 COleVariant FileName(LPCTSTR(_T("f:\\1.doc")));COleVariant tempFormat(long(wdOpenFormatDocument),VT_I4);
docPrint=docs.Open(FileName, ovFalse,
ovTrue, ovFalse,
&ovOptional,&ovOptional,
&ovOptional, &ovOptional,
&ovOptional,&tempFormat, //
ovOptional,ovFalse,
ovFalse, &ovOptional,
ovTrue, &ovOptional);open函数死活不返回,不知道什么缘故
{CoInitialize(NULL);
CApplication objWordApp; //word对象
COleVariant ovTrue((short)TRUE); //true
COleVariant ovFalse((short)FALSE); //false
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //创建一个IDispatch指针
if (!objWordApp.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return -1;
}
objWordApp.put_Visible(FALSE); //显示应用程序
objWordApp.put_DisplayAlerts(FALSE); CDocuments docs(objWordApp.get_Documents()); //word文档 CDocument0 docPrint; //word文档 COleVariant FileName(LPCTSTR(_T("f:\\1.doc")));COleVariant tempFormat(long(wdOpenFormatDocument),VT_I4);
docPrint=docs.Open(FileName, ovFalse,
ovTrue, ovFalse,
&ovOptional,&ovOptional,
&ovOptional, &ovOptional,
&ovOptional,&tempFormat, //
ovOptional,ovFalse,
ovFalse, &ovOptional,
ovTrue, &ovOptional);open函数死活不返回,不知道什么缘故
Open函数的参数不正确,你在这里设断点,然后在watch里面看各个参量的内存值,查一下。
文件名变量是这个CComVariant
CComVariant doc_name(file_name);
m_doc=m_docs.Open(&doc_name);不管好不好用,给点分,穷死了
COleVariant varFalse;
varFalse.vt=VT_BOOL;varFalse.bVal=false;
COleVariant varNull((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant varNullSTR("");
BOOL bVisiable=TRUE;
if(!m_Word.CreateDispatch(_T("Word.Application")))
{
AfxMessageBox("连接MsWord失败!");
pRetVal->nVal=0;;
}
if(ar.GetSize()>1)
{
ASSERT_PARAM(ar,1,VAR_INT);
bVisiable=ar[1].nVal;
}
m_Word.SetVisible(bVisiable);
Documents m_docs=m_Word.GetDocuments();
m_doc=m_docs.Open(&doc_name);
不行啊我们的版本不一样,office最烂的地方:不兼容,我是office2007open的参数十多个