128 lines
2.6 KiB
C++
128 lines
2.6 KiB
C++
#include "stdafx.h"
|
|
#include "TWordFormulasTemplet.h"
|
|
|
|
#include "AFXDISP.H"
|
|
#include "ATLBASE.H"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
TWordFormulasTemplet::TWordFormulasTemplet()
|
|
{
|
|
m_nCount = 0;
|
|
}
|
|
|
|
TWordFormulasTemplet::~TWordFormulasTemplet()
|
|
{
|
|
//释放内存申请资源
|
|
m_wdInlineShapes.ReleaseDispatch();
|
|
m_wdDoc.ReleaseDispatch();
|
|
m_wdDocs.ReleaseDispatch();
|
|
m_wdApp.ReleaseDispatch();
|
|
}
|
|
|
|
BOOL TWordFormulasTemplet::OpenWordFormulasTempletFile(LPCTSTR pszFileName)
|
|
{
|
|
BOOL bSuc = FALSE;
|
|
|
|
if (pszFileName != NULL)
|
|
{
|
|
if (PathFileExists(pszFileName))
|
|
{
|
|
if(!m_wdApp.CreateDispatch(_T("Word.Application")))
|
|
{
|
|
AfxMessageBox(_T("不能执行Microsoft Word 8.0!"));
|
|
return bSuc;
|
|
}
|
|
|
|
m_wdApp.SetVisible(FALSE);
|
|
m_wdDocs = m_wdApp.GetDocuments();
|
|
|
|
// 打开文件
|
|
COleVariant covTrue((short)TRUE),covFalse((short)FALSE);
|
|
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
|
|
|
|
COleVariant sss(pszFileName);
|
|
m_wdDoc = m_wdDocs.Open(&sss,&
|
|
covTrue,&covTrue,&covFalse,&covOptional,&
|
|
covOptional,&covFalse,&covOptional,&
|
|
covOptional,&covOptional);
|
|
|
|
if (m_wdDoc.m_lpDispatch != NULL)
|
|
{
|
|
m_wdInlineShapes = m_wdDoc.GetInlineShapes();
|
|
if (m_wdInlineShapes.m_lpDispatch != NULL)
|
|
{
|
|
m_nCount = m_wdInlineShapes.GetCount();
|
|
bSuc = TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CString sTip;
|
|
sTip.Format(_T("\n没有找到%s文件,请确定该文件是否存在!"), pszFileName);
|
|
acutPrintf(sTip);
|
|
}
|
|
}
|
|
|
|
return bSuc;
|
|
}
|
|
|
|
int TWordFormulasTemplet::GetFormulaCount()
|
|
{
|
|
return m_nCount;
|
|
}
|
|
|
|
void TWordFormulasTemplet::CloseFile()
|
|
{
|
|
COleVariant vTrue((short)TRUE),
|
|
vFalse((short)FALSE),
|
|
vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
|
|
|
|
m_wdApp.Quit(vFalse, vTrue, vFalse);
|
|
|
|
//释放内存申请资源
|
|
m_wdInlineShapes.ReleaseDispatch();
|
|
m_wdDoc.ReleaseDispatch();
|
|
m_wdDocs.ReleaseDispatch();
|
|
m_wdApp.ReleaseDispatch();
|
|
}
|
|
|
|
void TWordFormulasTemplet::InsertFormula(int nIndex, Selection& wdSelection)
|
|
{
|
|
if (m_wdInlineShapes.m_lpDispatch != NULL &&
|
|
m_wdApp.m_lpDispatch != NULL &&
|
|
wdSelection.m_lpDispatch != NULL)
|
|
{
|
|
if (nIndex >= 1 && nIndex <= m_nCount)
|
|
{
|
|
InlineShape inlShap = m_wdInlineShapes.Item(nIndex);
|
|
|
|
if (inlShap.m_lpDispatch != NULL)
|
|
{
|
|
Selection wdSel;
|
|
wdSel = m_wdApp.GetSelection();
|
|
if (wdSel.m_lpDispatch != NULL)
|
|
{
|
|
EmptyClipboard(); // 清空剪切板
|
|
|
|
inlShap.Select();
|
|
wdSel.Copy();
|
|
|
|
wdSelection.Paste();
|
|
|
|
EmptyClipboard();
|
|
|
|
wdSel.ReleaseDispatch();
|
|
}
|
|
|
|
inlShap.ReleaseDispatch();
|
|
}
|
|
}
|
|
}
|
|
}
|