要求:
     在vc程序中,控制word在特定的位置(如第三段之后)用word自带的画图工具(直线,矩形,自选图形等)画图,图形不是很难,就是直线,矩形和一个圆弧即可。

解决方案 »

  1.   

    VBA脚本例子:
    myDoc.Shapes.AddShape msoShapeRectangle, 5, 25, 100, 50
      

  2.   

    VC例子
    void CWebOfficeCtrl::LoadUnit(void)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加调度处理程序代码
    //m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->DeactivateUI();
    LPDISPATCH lpDisp;
    lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
    _Application_Word m_WordApp;
    _Document_Word m_WordDoc;
    m_WordDoc.AttachDispatch(lpDisp,TRUE);
    //m_WordDoc.Activate();
    m_WordApp=m_WordDoc.GetApplication();

    InlineShapes_Word m_WordInlineShapes;
    InlineShape_Word m_WordInlineShape;
    Selection_Word m_WordSelection;
    m_WordSelection=m_WordApp.GetSelection();
    m_WordInlineShapes=m_WordSelection.GetInlineShapes();
    COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    //AfxMessageBox(m_UnitName,MB_ICONINFORMATION);
    m_WordInlineShape=m_WordInlineShapes.AddPicture(DownUnit(m_UnitName),vFalse,vTrue,vOptional);

    //2003.11.29 Add By DigitalTitan[设置图元重叠属性]
    Shape_Word m_WordShape;
    m_WordShape=m_WordInlineShape.ConvertToShape();
    Shapes_Word m_WordShapes;
    VARIANT varResult;
    varResult.vt=VT_I4;
    varResult.lVal=m_WordShapes.GetCount();
    m_WordShape=m_WordShapes.Item(&varResult); 
    m_WordShape.Select(&varResult);
    WrapFormat_Word m_WordWrapFormat;
    m_WordWrapFormat=m_WordShape.GetWrapFormat();
    m_WordShape.SetRelativeHorizontalPosition(2);
    m_WordShape.SetRelativeVerticalPosition(1);
    if(m_UnitTop!="UnitTop")
    {m_WordShape.SetTop((float)atoi(m_UnitTop));}
    if(m_UnitLeft!="UnitLeft")
    {m_WordShape.SetLeft((float)atoi(m_UnitLeft));}
    if(m_UnitWidth!="UnitWidth")
    {m_WordShape.SetWidth((float)atoi(m_UnitWidth));}
    if(m_UnitHeight!="UnitHeight")
    {m_WordShape.SetHeight((float)atoi(m_UnitHeight));}
    m_WordWrapFormat.SetAllowOverlap(TRUE);
    m_WordWrapFormat.SetType(3);
    m_WordWrapFormat.ReleaseDispatch();
    m_WordShape.ReleaseDispatch();
    m_WordShapes.ReleaseDispatch();
    //

    m_WordInlineShape.ReleaseDispatch();
    m_WordInlineShapes.ReleaseDispatch();
    m_WordSelection.ReleaseDispatch();
    m_WordDoc.ReleaseDispatch();
    m_WordApp.ReleaseDispatch(); //m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->Activate(OLEIVERB_SHOW,m_pWebOfficeFrame->m_pWebOfficeView,NULL);
    }
      

  3.   

    你可以在Word中录制宏后查看宏代码然后改造到VC中,一些VBA参数可以在Word中用宏来获取.
      

  4.   

    to数字金刚:在word中录制宏没有问题,我主要就是在画图的时候没办法把word的绘图的区域加进去,你的代码我先试试看啊