准备工作:
1. 创建一个 MFC(EXE) 工程: MFC AppWizard ( exe ),工程为对话框形式(测试用)。
2. 在 CLASS VIEW 页面创建一个类:类名为: CWordOffice ,类的类型为: Class type : Generic Class 。
3. 在工具栏中找到 view -> class wizard -> Automation -> add class -> from a tye library ,然后选中 offfice 安装的目录中的 MSWORD9.OLB ,然后选中所有列出的类名,点 OK 完成。
准备工作完成,下面贴出相关部分的代码:
CWordOffice.h 中的手动写入的代码如下(自动生成的没有加入):
#include "atlbase.h"
#include "msword9.h"
class CWordOffice
{
private:
_Application m_wdApp;
Documents m_wdDocs;
_Document m_wdDoc;
Selection m_wdSel;
Range m_wdRange;
InlineShapes m_wdInlineShapes;
InlineShape m_wdInlineShape;
public:
CWordOffice();
virtual ~CWordOffice();
public:
//操作
//**********************创建新文档*******************************************
BOOL CreateApp(); //创建一个新的WORD应用程序
BOOL CreateDocuments(); //创建一个新的Word文档集合
BOOL CreateDocument(); //创建一个新的Word文档
BOOL Create(); //创建新的WORD应用程序并创建一个新的文档
void ShowApp(); //显示WORD文档
void HideApp(); //隐藏word文档
//**********************打开文档*********************************************
BOOL OpenDocument(CString fileName);//打开已经存在的文档。
BOOL Open(CString fileName); //创建新的WORD应用程序并打开一个已经存在的文档。
BOOL SetActiveDocument(short i); //设置当前激活的文档。
//**********************保存文档*********************************************
BOOL SaveDocument(); //文档是以打开形式,保存。
BOOL SaveDocumentAs(CString fileName);//文档以创建形式,保存。
BOOL CloseDocument();
void CloseApp();
//**********************文本书写操作*****************************************
void WriteText(CString szText); //当前光标处写文本
void WriteNewLineText(CString szText, int nLineCount = 1); //换N行写字
void WriteEndLine(CString szText); //文档结尾处写文本
void WholeStory(); //全选文档内容
void Copy(); //复制文本内容到剪贴板
void InsertFile(CString fileName); //将本地的文件全部内容写入到当前文档的光标处。
//**********************图片插入操作*****************************************
void InsertShapes(CString fileName);//在当前光标的位置插入图片
//**********************超链接插入操作*****************************************
void InsertHyperlink(CString fileLink);//超级链接地址,可以是相对路径。
};
CWordOffice.c中的手写代码如下:
CWordOffice::CWordOffice()
{
}
CWordOffice::~CWordOffice()
{
COleVariant vTrue((short)TRUE),
vFalse((short)FALSE),
vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//m_wdDoc.Save();
m_wdApp.Quit(vFalse, /