分享
 
 
 

在VC中调用WORD(显示,修改,存盘,运行宏)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

(1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"office"

(2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持,并且选中active document container 其它都为默认

(3)在View菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a TypeLibrary, 在Office目录中选中Microsoft Word 97/2000 类型库Word8.olb或Word9.olb,选中application,document,_document。单击ok

(4)给COfficeCntrItem添加一方法。GetIDispatch()

其源码如下:

ASSERT_VALID(this);

ASSERT(m_lpObject != NULL);

LPUNKNOWN lpUnk = m_lpObject;

Run();

LPOLELINK lpOleLink = NULL;

if (m_lpObject->QueryInterface(IID_IOleLink, (LPVOID FAR*)&lpOleLink) == NOERROR)

{

ASSERT(lpOleLink != NULL);

lpUnk = NULL;

if (lpOleLink->GetBoundSource(&lpUnk) != NOERROR)

{

TRACE0("Warning: Link is not connected!\n");

lpOleLink->Release();

return NULL;

}

ASSERT(lpUnk != NULL);

}

LPDISPATCH lpDispatch = NULL;

if (lpUnk->QueryInterface(IID_IDispatch, (LPVOID FAR*)&lpDispatch)!=NOERROR)

{

TRACE0("Warning: does not support IDispatch!\n");

return NULL;

}

ASSERT(lpDispatch != NULL);

return lpDispatch;

(5)。在officeView.h添加#include "msword8.h"

(6)。修改void COfficeView::OnInsertObject(),源码如下:

BeginWaitCursor();

COfficeCntrItem* pItem = NULL;

TRY

{

// Create new item connected to this document.

COfficeDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pItem = new COfficeCntrItem(pDoc);

ASSERT_VALID(pItem);

// Initialize the item from the dialog data.

/* if (!dlg.CreateItem(pItem))

AfxThrowMemoryException(); // any exception will do

ASSERT_VALID(pItem);*/

CLSID clsid; //

if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid)))

AfxThrowMemoryException();

if(!pItem->CreateNewItem(clsid))

/*if(!pItem->CreateFromFile (filename,clsid)) */

AfxThrowMemoryException();

ASSERT_VALID(pItem);

pItem->Activate (OLEIVERB_SHOW,this);

ASSERT_VALID(pItem);

m_pSelection = pItem; // set selection to last inserted item

pDoc->UpdateAllViews(NULL);

// As an arbitrary user interface design, this sets the selection

// to the last item inserted.

// TODO: reimplement selection as appropriate for your application

m_pSelection = pItem; // set selection to last inserted item

pDoc->UpdateAllViews(NULL);

}

CATCH(CException, e)

{

if (pItem != NULL)

{

ASSERT_VALID(pItem);

pItem->Delete();

}

AfxMessageBox(IDP_FAILED_TO_CREATE);

}

END_CATCH

EndWaitCursor();

(7)重载ID—FILE—SAVE,

void COfficeView::OnFileSave()

{

// TODO: Add your command handler code here

TRY{

LPDISPATCH lpDisp;

lpDisp = m_pSelection->GetIDispatch();

Documents docs;

_Application app;

_Document mydoc;

Documents my;

mydoc.AttachDispatch (lpDisp,TRUE);

app=mydoc.GetApplication ();

/* app.Run ("Macro3");*/

mydoc.Activate ();

BOOL password=mydoc.GetHasPassword ();

mydoc.SetPassword ("love");

password=mydoc.GetHasPassword ();

COleVariant vFalse((short)FALSE);

mydoc.SaveAs (COleVariant("c:\\love.doc"),vFalse,vFalse, COleVariant(""),vFalse,

COleVariant(""),vFalse,vFalse,vFalse,vFalse,vFalse);

}

CATCH(CException, e)

{

}

END_CATCH

}

bulid,click insert object,and edit ,and save.maybe run macro.

自己辛苦了很久加上别人的经验总算做出来。:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有