try
catch
不行吗?我的一段代码是打开一个excel模板文件,就是使用了try, catch,可以的!

解决方案 »

  1.   

    我也想到了用try,catch
    但我不知道代码怎么写?请指教
      

  2.   

    try
    {
          // Write the file header
          file.Write((LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER));
          //
          // Write the DIB header and the bits
          file.WriteHuge(lpBI, dwDIBSize);
    }
    catch (CFileException* e)
       {
          ::GlobalUnlock((HGLOBAL) hDib);
          throw;
       }::GlobalUnlock((HGLOBAL) hDib);
       return TRUE;
      

  3.   

    怎么把MSDN上的代码给我搞来了,我早就看过了。
      

  4.   

    还是把代码全部贴出来让大家看看吧
    _Application word; 
    LPDISPATCH pDisp;
    LPUNKNOWN pUnk;
    CLSID clsid;
    ::CLSIDFromProgID(L"word.Application",&clsid);
    if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK){
    VERIFY(pUnk->QueryInterface(IID_IDispatch,
                (void**)&pDisp)==S_OK);
    word.AttachDispatch(pDisp);
    pUnk->Release();
    }
    else
    {
    if(!word.CreateDispatch("word.Application")){
    AfxMessageBox("failed");
    return ;
    }


    _Document m_document;
    Documents m_documents;
    LPDISPATCH pDocuments=word.GetDocuments();
    m_documents.AttachDispatch(pDocuments);
    VARIANT varTrue,varFalse;
    VARIANT varOptional;
    VariantInit(&varTrue);
    varTrue.vt=VT_BOOL;
    varTrue.boolVal = true;
    VariantInit(&varFalse);
    varFalse.vt=VT_BOOL;
    varFalse.boolVal=false;
    VariantInit(&varOptional);
    varOptional.vt=VT_ERROR;
    varOptional.scode =DISP_E_PARAMNOTFOUND;
    LPDISPATCH pDocument=m_documents.Open(COleVariant("e:\\doc.doc"),&varOptional,&varFalse,
    &varOptional,COleVariant("1234"),&varOptional,&varOptional,
    &varOptional,&varOptional,&varOptional,
    &varOptional,&varOptional,&varOptional,
    &varOptional,&varOptional);
    m_document.AttachDispatch(pDocument);
    word.SetVisible(true);
    m_document.Activate();
    如果文档密码不是“1234”,MFC就自动弹出了一个消息框说密码不正确,我现在想不让它弹出此消息框,我给怎样得到错误消息?