With the Edraw office Viewer Component, you can do the office automation in a customize form or web page. It provides the “GetActiveDocument” method to return the document’s dispath interface.
The follow example written with Visual C++ 6.0 demo how to insert an image into the opened microsoft word document.
void COfficeViewerDlg::OnWordautomation()
{
CString strFilter = L”Microsoft Word Document|*.doc;*.docx;*.dot;*.rft|All Files (*.*)|*.*||”;
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, strFilter);
dlg.m_ofn.nFilterIndex = 1;
if (dlg.DoModal() == IDOK)
{
CString pathname = dlg.GetPathName();
VARIANT varPath;
varPath.vt = VT_BSTR; varPath.bstrVal = pathname.AllocSysString();
VARIANT varOpt;
varOpt.vt = VT_ERROR; varOpt.scode = DISP_E_PARAMNOTFOUND;
if(m_oEdrawOfficeViewer.Open(varPath, varOpt)==FALSE){
AfxMessageBox(L”Failed to open the document!”);
return;
}
LPDISPATCH lpDisp;
lpDisp = m_oEdrawOfficeViewer.GetActiveDocument();
//Add text to the first line of the document
_Document m_WordDoc;
//set _Document doc to use lpDisp, the IDispatch* of the actual document.
m_WordDoc.AttachDispatch(lpDisp);
Shape m_wordShape;
Shapes m_wordShapes;
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant vTrue((short)TRUE),vFalse((short)FALSE);
CString m_strPath;
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
m_strPath.Format(L”%s”,exeFullPath);
int ndx = m_strPath.ReverseFind (‘\\’);
m_strPath = m_strPath.Left (ndx);
CString filename = m_strPath + L”\\seal.bmp”;
_Application m_WordApp;
m_wordShapes = m_WordDoc.GetShapes();
CString FileName =filename;
m_WordApp=m_WordDoc.GetApplication();
InlineShapes m_WordInlineShapes;
InlineShape m_WordInlineShape;
Selection m_WordSelection;
m_WordSelection=m_WordApp.GetSelection();
m_WordInlineShapes=m_WordSelection.GetInlineShapes();
m_WordInlineShape = m_WordInlineShapes.AddPicture(FileName,vFalse,vTrue,vOpt);
m_wordShape = m_WordInlineShape.ConvertToShape();
Shapes shs;
Shape shp;
shs=m_WordDoc.GetShapes();
VARIANT var;
var.vt=VT_I4;
var.lVal=shs.GetCount();
shp=shs.Item(&var);
shp.Select(&var);
ShapeRange m_wordShapeRange;
WrapFormat m_wordWrapFormant;
m_WordApp = m_WordDoc.GetApplication();
m_wordShape = m_WordSelection.GetShapeRange();
m_wordWrapFormant = m_wordShape.GetWrapFormat();
m_wordWrapFormant.SetType(3);
m_wordShapeRange.ZOrder(4);
PictureFormat m_wordPictureFormat = m_wordShape.GetPictureFormat();
m_wordPictureFormat.SetTransparentBackground(TRUE);
m_wordPictureFormat.SetTransparencyColor(0xFFFFFF);
FillFormat m_wordFillFormat = m_wordShape.GetFill();
m_wordFillFormat.SetVisible(FALSE);
shs.ReleaseDispatch();
shp.ReleaseDispatch();
m_wordPictureFormat.ReleaseDispatch();
m_wordFillFormat.ReleaseDispatch();
m_wordWrapFormant.ReleaseDispatch();
m_wordShapeRange.ReleaseDispatch();
m_wordShape.ReleaseDispatch();
m_wordShapes.ReleaseDispatch();
m_WordSelection.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
}
}
Leave a Reply
You must be logged in to post a comment.
Recent Comments