3,245
社区成员
发帖
与我相关
我的任务
分享
DWORD _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(TRUE); //显示应用程序
objWordApp.put_DisplayAlerts(FALSE);
CDocuments docs(objWordApp.get_Documents()); //word文档
//CComVariant NewTemplate(false),DocumentType(0),Visible;
//docs.Add(ovOptional,&NewTemplate,&DocumentType,&Visible);
CDocument0 docPrint; //word文档
COleVariant FileName(LPCTSTR(_T("f:\\3.docx")));
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);
void COleDispatchDriver::InvokeHelperV(DISPID dwDispID, WORD wFlags,
VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, va_list argList)
{
// make the call
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);
// throw exception on failure
if (FAILED(sc))
{
VariantClear(&vaResult);
if (sc != DISP_E_EXCEPTION)
{
// non-exception error code
AfxThrowOleException(sc);
}
// make sure excepInfo is filled in
if (excepInfo.pfnDeferredFillIn != NULL)
excepInfo.pfnDeferredFillIn(&excepInfo);
// allocate new exception, and fill it
COleDispatchException* pException =
new COleDispatchException(NULL, 0, excepInfo.wCode);
ASSERT(pException->m_wCode == excepInfo.wCode);
if (::SysStringLen(excepInfo.bstrSource))
{
pException->m_strSource = excepInfo.bstrSource;
}
::SysFreeString(excepInfo.bstrSource);
if (::SysStringLen(excepInfo.bstrDescription))
{
pException->m_strDescription = excepInfo.bstrDescription;
}
::SysFreeString(excepInfo.bstrDescription);
if (::SysStringLen(excepInfo.bstrHelpFile))
{
pException->m_strHelpFile = excepInfo.bstrHelpFile;
}
::SysFreeString(excepInfo.bstrHelpFile);
pException->m_dwHelpContext = excepInfo.dwHelpContext;
pException->m_scError = excepInfo.scode;
// then throw the exception
THROW(pException); //这里抛出异常了
}