Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtCalc/WTWordFormulasTemplet.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

134 lines
2.7 KiB
C++

#include "stdafx.h"
#include "WTWordFormulasTemplet.h"
#include "AFXDISP.H"
#include "ATLBASE.H"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
WTWordFormulasTemplet::WTWordFormulasTemplet()
{
m_nCount = 0;
}
WTWordFormulasTemplet::~WTWordFormulasTemplet()
{
//释放内存申请资源
m_wdInlineShapes.ReleaseDispatch();
m_wdDoc.ReleaseDispatch();
m_wdDocs.ReleaseDispatch();
m_wdApp.ReleaseDispatch();
}
BOOL WTWordFormulasTemplet::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);
m_wdDoc = m_wdDocs.Open(&COleVariant(pszFileName),&
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 WTWordFormulasTemplet::GetFormulaCount()
{
return m_nCount;
}
void WTWordFormulasTemplet::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 WTWordFormulasTemplet::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();
try
{
wdSel.Copy();
wdSelection.Paste();
}
catch (CException e)
{
int i;
}
EmptyClipboard();
wdSel.ReleaseDispatch();
}
inlShap.ReleaseDispatch();
}
}
}
}