C++操纵Word文档,怎么添加水印

请问有谁知道怎么用C++给一个word文档添加水印嘛?
我看VBA宏的做法是在HeaderFooter的属性Shapse中使用方法AddPicture,
但把这段VBA宏转成C++语言就不知道怎么写了,
不知道里面的参数怎么填写,求大佬告诉!

VBA宏代码如下——
Sub 宏1()
'
' 宏1 宏
'
'
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes.AddPicture(FileName:= _
"C:\Users\Administrator\Pictures\2016-10-30\001.jpg", LinkToFile:=False, _
SaveWithDocument:=True).Select
Selection.ShapeRange.Name = "WordPictureWatermark196080593"
Selection.ShapeRange.PictureFormat.Brightness = 0.85
Selection.ShapeRange.PictureFormat.Contrast = 0.15
Selection.ShapeRange.LockAspectRatio = True
Selection.ShapeRange.Height = CentimetersToPoints(21.44)
Selection.ShapeRange.Width = CentimetersToPoints(14.65)
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapNone
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionMargin
Selection.ShapeRange.Left = wdShapeCenter
Selection.ShapeRange.Top = wdShapeCenter
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

http://download.csdn.net/download/tonghuasanren/1226900

OLE专业户来也!!!

C/C++ codewdApp->Connect();// 为调试方便,将WORD界面可视wdDoc->Application->Visible=true;// 建立一个新文档wdDoc->Application->Documents->Add();
wdDoc->ConnectTo(wdApp->get_ActiveDocument());

wdDoc->Application->ActiveWindow->Selection->Range->Select();
wdDoc->Application->ActiveWindow->ActivePane->View->SeekView=
WdSeekView::wdSeekCurrentPageHeader;

wdDoc->Application->Selection->HeaderFooter->Shapes->AddTextEffect(
Office_xp::MsoPresetTextEffect::msoTextEffect2,
WideString("公司绝密").c_bstr(),
WideString("宋体").c_bstr(),1.0,
MsoTriState::msoFalse,
MsoTriState::msoFalse,0,0)->Select();

Word_xp::ShapeRangePtr r= wdDoc->Application->Selection->ShapeRange;

r->Name= WideString("PowerPlusWaterMarkObject1").c_bstr();
r->TextEffect->NormalizedHeight= MsoTriState::msoFalse;
r->Line->Visible= MsoTriState::msoFalse;
r->Fill->Visible= MsoTriState::msoTrue;
r->Fill->Solid();
r->Fill->Transparency=0.5;

r->Rotation=315;

r->LockAspectRatio= MsoTriState::msoTrue;
r->Height= wdDoc->Application->CentimetersToPoints(2.58);
r->Width= wdDoc->Application->CentimetersToPoints(18.07);

r->WrapFormat->AllowOverlap= MsoTriState::msoTrue;
r->WrapFormat->Side= Word_xp::WdWrapSideType::wdWrapLargest;
r->WrapFormat->Type= Word_xp::WdWrapType::wdWrapNone;

r->RelativeHorizontalPosition= Word_xp
::WdRelativeHorizontalPosition
::wdRelativeHorizontalPositionMargin;
r->RelativeVerticalPosition= Word_xp
::WdRelativeVerticalPosition
::wdRelativeVerticalPositionMargin;

r->Left= Word_xp::WdShapePosition::wdShapeCenter;
r->Top= Word_xp::WdShapePosition::wdShapeCenter;

wdDoc->Application->ActiveWindow->ActivePane->View->SeekView=
WdSeekView::wdSeekMainDocument;

以上是用Office组件实现的给Word文档添加水印,花去我太多的时间调试了。郁闷呢。
需要特别提醒一下:测试环境是Vista(英文) + Office2007(英文) + CBuilder2009
工程中加载的是Office xp的包,如果你的测试工程用的是Office 2k的包,需要更改代码中相应的xp为2k字样。

一定要严防死守,不能让一个BUG出现在Release版本中,否则我们在软件界说不清楚!

C/C++ codewdApp->Connect();// 为调试方便,将WORD界面可视wdDoc->Application->Visible=true;// 建立一个新文档wdDoc->Application->Documents->Add();
wdDoc->ConnectTo(wdApp->get_ActiveDocument());

wdDoc->Application->ActiveWindow->Selection->Range->Select();
wdDoc->Application->ActiveWindow->ActivePane->View->SeekView=
WdSeekView::wdSeekCurrentPageHeader;

wdDoc->Application->Selection->HeaderFooter->Shapes->AddTextEffect(
Office_xp::MsoPresetTextEffect::msoTextEffect2,
WideString("公司绝密").c_bstr(),
WideString("宋体").c_bstr(),1.0,
MsoTriState::msoFalse,
MsoTriState::msoFalse,0,0)->Select();

Word_xp::ShapeRangePtr r= wdDoc->Application->Selection->ShapeRange;

r->Name= WideString("PowerPlusWaterMarkObject1").c_bstr();
r->TextEffect->NormalizedHeight= MsoTriState::msoFalse;
r->Line->Visible= MsoTriState::msoFalse;
r->Fill->Visible= MsoTriState::msoTrue;
r->Fill->Solid();
r->Fill->Transparency=0.5;

r->Rotation=315;

r->LockAspectRatio= MsoTriState::msoTrue;
r->Height= wdDoc->Application->CentimetersToPoints(2.58);
r->Width= wdDoc->Application->CentimetersToPoints(18.07);

r->WrapFormat->AllowOverlap= MsoTriState::msoTrue;
r->WrapFormat->Side= Word_xp::WdWrapSideType::wdWrapLargest;
r->WrapFormat->Type= Word_xp::WdWrapType::wdWrapNone;

r->RelativeHorizontalPosition= Word_xp
::WdRelativeHorizontalPosition
::wdRelativeHorizontalPositionMargin;
r->RelativeVerticalPosition= Word_xp
::WdRelativeVerticalPosition
::wdRelativeVerticalPositionMargin;

r->Left= Word_xp::WdShapePosition::wdShapeCenter;
r->Top= Word_xp::WdShapePosition::wdShapeCenter;

wdDoc->Application->ActiveWindow->ActivePane->View->SeekView=
WdSeekView::wdSeekMainDocument;

以上是用Office组件实现的给Word文档添加水印,花去我太多的时间调试了。郁闷呢。
需要特别提醒一下:测试环境是Vista(英文) + Office2007(英文) + CBuilder2009
工程中加载的是Office xp的包,如果你的测试工程用的是Office 2k的包,需要更改代码中相应的xp为2k字样。

一定要严防死守,不能让一个BUG出现在Release版本中,否则我们在软件界说不清楚!