虽然找了网上的很多资料,有一段程序
_Application app;
Selection sel=app.GetSelection();
InlineShapes inlineshapes = sel.GetInlineShapes();
LPCTSTR FileNameBMP = "C:\\1.jpg";
CComVariant LinkToFile(FALSE);
CComVariant SaveWithDocument(FALSE);
CComVariant RangeT;
RangeT.vt = VT_DISPATCH;
RangeT.pdispVal = sel.m_lpDispatch;
inlineshapes.AddPicture(FileNameBMP,&LinkToFile,&SaveWithDocument,&RangeT);结果说是“类型不匹配”。请大虾指教!

解决方案 »

  1.   

    FileNameBMP改成Variant的,而且必须用UNICODE
      

  2.   

    void CMainFrame::OnViewAddpictodoc() 
    {
    _Application objWord;

        // ÓÃCOleVariant¶¨Òå±äÁ¿±È½Ï·½±ã
        COleVariant covTrue((short)TRUE),
    covFalse((short)FALSE),
    covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

        // µÃµ½ IDispatch Ö¸Õë²¢¸½¼Óµ½objWord¶ÔÏóÖÐ.
        if (!objWord.CreateDispatch("Word.Application"))
        {
            AfxMessageBox("Couldn''t get Word object.");
            return;
        }

        objWord.SetVisible(TRUE); //ÏÔʾ³ÌÐò´°¿Ú.

        Documents docs(objWord.GetDocuments());
    _Document testDoc;

        testDoc.AttachDispatch
    (
    docs.Open
    (
    COleVariant("C:\\Doc1.doc",VT_BSTR),
    covFalse, // È·ÈÏת»»
    covFalse, // Ö»¶Á
    covFalse, // Ìí¼Óµ½×î½üÎļþÖÐ
    covOptional, // Îĵµ¿ÚÁî.
    covOptional, // Ä£°å¿ÚÁî.
    covFalse, // »Ö¸´Ô­×´.
    covOptional, // Ð´Îĵµ¿ÚÁî.
    covOptional, // Ð´Ä£°å¿ÚÁî.
    covOptional, // ¸ñʽ. // ¸Ã²ÎÊýÓÃÓÚ Word 97 ÒÔÇ°
    covOptional, // ±àÂë // ÓÃÓÚ Word 2000/2002
    covTrue, // ¿É¼û
    covOptional, // ´ò¿ª²¢ÐÞ¸´
    COleVariant((long)0, VT_I4 ), // DocumentDirection wdDocumentDirection LeftToRight
    covOptional // ÎÞ±àÂë¶Ô»°¿ò
    ) // Close Open parameters
    ); // Close AttachDispatch(¡­)

    //´ò¿ªWordÎĵµ£» 
    Selection sel;
    sel.AttachDispatch( objWord.GetSelection() );//½«SelectionÀà¶ÔÏóm_SelºÍIdispatch½Ó¿Ú¹ØÁªÆðÀ´£»

    InlineShapes inlineshapes;
    inlineshapes.AttachDispatch( sel.GetInlineShapes() );
    LPCTSTR FileNameBMP = "C:\\abcdef.bmp";
    InlineShape inlineshape;
    inlineshape.AttachDispatch( inlineshapes.AddPicture(FileNameBMP,covFalse,covTrue,covOptional) );

    inlineshape.ReleaseDispatch();
    inlineshapes.ReleaseDispatch();
    sel.ReleaseDispatch();
    testDoc.ReleaseDispatch();
    docs.ReleaseDispatch();
    objWord.ReleaseDispatch();
    }