项目是一个 OA系统需要实现留痕\盖章,请大家提一下解决思路.感谢~~

解决方案 »

  1.   

    在控件中使用office提供的开发接口可以实现此功能
      

  2.   

    http://docs.rinet.ru/VB/ch16.htm
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;311765
      

  3.   

    呵呵,ms的例子比较经典,研究了很长时间了
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;311765
      

  4.   

    up!
    我觉得xdljf(hunter)提供的ms例子很好!
      

  5.   

    void CWebOfficeView::EmbedAutomateDoc(void)
    {
    BeginWaitCursor();
    CDC* pDC;
    pDC=GetDC();
    COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    CWebOfficeOleClientItem* pItem=NULL;
    TRY
    {
    CWebOfficeDoc* pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    pItem=new CWebOfficeOleClientItem(pDoc);
    ASSERT_VALID(pItem);
    CLSID clsid;
    if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
    AfxThrowMemoryException();
    if(m_FileName.GetLength()==8)
    {
    if(!pItem->CreateNewItem(clsid))
    AfxThrowMemoryException();
    }
    else
    {
    if(m_FileName.Find("Http://",0)!=-1)
    {
    CString m_DocPath=DownTemplate(m_FileName);
    if(!pItem->CreateFromFile(m_DocPath,clsid))
    {
    AfxThrowMemoryException();
    }
    DeleteFile(m_DocPath);
    }
    else
    {
    //if(!pItem->CreateFromFile(DownTemplate(m_FileName),clsid))
    if(!pItem->CreateFromFile(m_FileName,clsid))
    {
    AfxThrowMemoryException();
    }
    }
    }
    ASSERT_VALID(pItem);
    pItem->DoVerb(OLEIVERB_SHOW,this);
    m_pSelection=pItem;
    lpDisp=pItem->GetIDispatch();

    _Application_Word m_WordApp;
    _Document_Word m_WordDoc;
    m_WordDoc.AttachDispatch(lpDisp,TRUE);
    m_WordDoc.Activate();
    m_WordApp=m_WordDoc.GetApplication();
    Window_Word m_WordWindow;
    m_WordWindow=m_WordDoc.GetActiveWindow();
    m_WordWindow.SetDisplayHorizontalScrollBar(TRUE);
    m_WordWindow.SetDisplayVerticalScrollBar(TRUE);

    m_WordWindow.SetDisplayRulers(TRUE);
    Pane_Word m_WordPane;
    m_WordPane=m_WordWindow.GetActivePane();
    View_Word m_WordView;
    m_WordView=m_WordPane.GetView();
    Zoom_Word m_WordZoom;
    m_WordZoom=m_WordView.GetZoom();
    m_WordZoom.SetPercentage((long)75);


    if(m_VersionTrack.Find("VersionTrack",0)!=-1)
    {
    m_WordDoc.SetTrackRevisions(FALSE);
    }
    else
    {
    m_WordDoc.SetTrackRevisions(TRUE);
    }
    /*
    if(m_DocStatus.Find("DocStatus",0)!=-1)
    {
    pItem->DeactivateUI();
    }
    else
    {
    //
    }
    */
    m_WordZoom.ReleaseDispatch();
    m_WordView.ReleaseDispatch();
    m_WordPane.ReleaseDispatch();
    m_WordWindow.ReleaseDispatch();
    m_WordDoc.ReleaseDispatch();
    m_WordApp.ReleaseDispatch();
    pDoc->UpdateAllViews(NULL);
    }
    CATCH(COleException,e)
    {
    char strErrorBuf[255];
    e->GetErrorMessage(strErrorBuf,255,NULL);
    AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
    if (pItem!=NULL)
    {
    ASSERT_VALID(pItem);
    pItem->Delete();
    }
    }
    END_CATCH
    EndWaitCursor();
    }