2017-12-29 44 views
8

Ich bin mit Visual C++ Word zu automatisieren, in dem folgenden Code Ich versuche, Text von einem Bild gefolgt einzufügen:Warum erscheint mein Bild vor dem Text?

// OLEParagraphs is an object of COLEParagraphs 
COLEParagraph LastParagraph = OLEParagraphs.get_Last(); 
COLERange LastParagraphRange = LastParagraph.get_Range(); 
COLEInlineShapes InlineShapes = LastParagraph.get_InlineShapes(); 

LastParagraphRange.put_Text(_T(“See picture below:”)); 
InlineShapes.AddPicture(strPicFileName, COleVariant(0l), COleVariant(1l), DOCX_VARIANT_OPTIONAL); 

jedoch nach der Ausführung des Codes, finde ich den Text immer nach dem Bild gesetzt wird, nicht vor dem Bild, warum?

Dank

+0

Das ist eine * sehr * obskure Bibliothek, die Sie verwenden. Herzlichen Glückwunsch, Sie sind der einzige Google-Treffer für DOCX_VARIANT_OPTIONAL. Riecht wie etwas OpenXml-basiert, schwer zu erraten. Die Interop-Funktion benötigt 4 zusätzliche Argumente, um das Bild relativ zur Seite zu platzieren. Seite, nicht Absatz. Erleuchte uns über diese Bibliothek. –

+0

Dies hat damit zu tun, wie Word ein RANGE-Objekt definiert und damit arbeitet. Suchen Sie in der von Ihnen verwendeten Bibliothek nach der COLLAPSE-Methode. Sie möchten den Typ wdCollapseEnd für den Parameter Direction, aber Sie müssen den Bereich neu definieren, der am Ende des Textes liegt, den Sie in den Bereich eingefügt haben. (Hinweis: Wenn Sie versuchen würden, mehr Text einzufügen, würde der Text, den Sie bereits dem Bereich zugewiesen haben, ERSETZEN, wenn Sie den Bereich nicht zuerst reduziert haben.) –

Antwort

1

die Beschreibung des Bereichsparameters (die letzten, für die Sie bieten DOCX_VARIANT_OPTIONAL) Gegeben:

Optional Object. The location where the picture will be placed in the text. If the range isn't collapsed, the picture replaces the range; otherwise, the picture is inserted. If this argument is omitted, the picture is placed automatically. 

Ich würde dies erraten ist etwas mit „automatischer Platzierung“ zu tun. Fügen Sie vor dem Text einen Platzhalterbereich ein, und geben Sie diesen als Speicherort an.

Verwandte Themen