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函数死活不返回,不知道什么缘故

解决方案 »

  1.   

    应该是docPrint=docs.Open(FileName, ovFalse,....
    Open函数的参数不正确,你在这里设断点,然后在watch里面看各个参量的内存值,查一下。
      

  2.   

    我这以前的代码中
    文件名变量是这个CComVariant
       
    CComVariant   doc_name(file_name); 
    m_doc=m_docs.Open(&doc_name);不管好不好用,给点分,穷死了
      

  3.   

    CComVariant   doc_name(file_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);
      

  4.   


    不行啊我们的版本不一样,office最烂的地方:不兼容,我是office2007open的参数十多个