分享
 
 
 

如何使用MFC和类型库创建自动化项目

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

如何使用MFC和类型库创建自动化项目

作者:MSDN

翻译:PowerCPP

摘要

本文详细介绍了如何自动化像Microsoft Office这样支持COM的应用程序。

更多信息

下面部分介绍了如何创建MFC项目。采用Microsoft Excel举例,你可以将前8个步骤用于任何项目,修改9-15步用于不同的应用程序。

创建自动化项目

1.

在Microsoft Developer Studio中,创建"MFC AppWizard(exe)"项目,命名为"AutoProject."

2.

在第1步的MFC应用程序向导中,选择"Dialog Based"应用程序类型并点"完成"

在创建的项目信息对话框中将显示创建的类:Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp

Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp

点 OK 完成项目创建。

3.

Visual Studio设计编辑区打开了对话框"IDD_AUTOPROJECT_DIALOG" ,依照下面两步修改它。

4.

删除静态控件(IDC_STATIC)和Cancel按钮(IDCANCEL)

5.

将OK按钮改为"IDRUN",说明改为"Run." 关闭AutoProject.rc对话框设计界面。

6.

点View菜单中的ClassWizard(或按CTRL+W)

7.

选择消息映射(Message Maps)标签,在对象ID列表框中选择IDRUN,在消息列表框中选择"BN_CLICKED",点添加函数并命名为"OnRun",点OK关闭ClassWizard

提示:此步骤在AutoProjectDLG.h中定义了"OnRun();"函数,并在 AutoProjectDLG.cpp 中添加了消息处理函数CAutoProjectDlg::OnRun()。

8.

点View菜单中的ClassWizard(或按CTRL+W)

9.

选择Automation标签,点Add Class并选择"From a type library" 浏览并选择你希望自动化的对象库(例如,如果你自动化Excel 97, 则选择Microsoft Excel 8.0 对象库,默认位于 C:\Program Files\Microsoft Office\Office\Excel8.olb).

如果你自动化Microsoft Excel 2000,选择位于 C:\Program Files\Microsoft Office\Office\Excel9.olb 的Microsoft Excel 9.0 对象库。

如果你自动化Microsoft Excel 2002和Microsoft Office Excel 2003 ,对象库内含在Excel.exe中,Office 2002的Excel.exe 默认位于 C:\program Files\Microsoft Office\Office10\Excel.exe, Office 2003的Excel.exe 默认位于 C:\program Files\Microsoft Office\Office11\Excel.exe

。选择合适的对象库后,点Open,在类确认列表中选择所有类,点OK。

提示:类确认对话框中的列表框里包含了Microsoft Excel 类型库中的所有IDispatch接口(与类中一致)。在对话框下面可以看到命名为Excel8.cpp的执行文件,该文件包含了从COleDispatchDriver派生的封装类,头文件是Excel8.h(对于Excel 2002和Excel 2003,文件名为Excel.cpp和Excel.h)

10.

点OK关闭MFC ClassWizard对话框

11.

在 CAutoProjectApp::InitInstance() 函数中添加如下代码,用于加载COM支持库:BOOL CAutoProjectApp::InitInstance()

{

if(!AfxOleInit()) // Your addition starts here

{

AfxMessageBox("Could not initialize COM dll");

return FALSE;

} // End of your addition

AfxEnableControlContainer();

.

.

.

}

12.

在AutoProject.cpp顶部添加#include行#include <afxdisp.h

13.

在AutoProjectDlg.cpp 顶部stdafx.h下添加对excel8.h的包含#include "stdafx.h"

#include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.

14.

在CAutoProjectDlg::OnRun()中添加如下所示的自动化代码void CAutoProjectDlg::OnRun()

{

_Application app; // app 是 Excel _Application 对象

// 启动 Excel 并得到应用程序对象

if(!app.CreateDispatch("Excel.Application"))

{

AfxMessageBox("Couldn''t start Excel.");

}

else

{

//使 Excel 可视,然后显示消息

app.SetVisible(TRUE);

AfxMessageBox ("Excel is Running!");

}

}

15.

编译并运行项目。运行结果:当你点击对话框中的Run按钮,Microsoft Excel将被调用。关闭消息框使Auto_Excel对话框激活。CAutoProjectDlg::OnRun()函数结束,application变量离开作用域,Microsoft Excel将退出。

附加说明

当你在项目中从类型库添加类(根据上面所说的9个步骤),你将注意到在项目中添加了许多类。在ClassView中你可以双击某个类查看该类在Excel8.cpp中的定义。

如果你需要验证返回值或改变函数的执行,你需要得到函数的定义,无论何时当你改变函数定义,记住在Excel8.h中修改定义。当你这样做的时候,请确认你改变的是正确的函数定义;有时多个类中包含了相同名字的函数,例如GetApplication。

通过以上如何自动化Microsoft Excel的讲述,你可以将这些方法应用到其它自动化程序中。下表包含了Microsoft Office应用程序类型库的名称。

应用程序(Application) 类型库(Type Library)

--------------------------------------------------------

Microsoft Access 97 Msacc8.olb

Microsoft Jet Database 3.5 DAO350.dll

Microsoft Binder 97 Msbdr8.olb

Microsoft Excel 97 Excel8.olb

Microsoft Graph 97 Graph8.olb

Microsoft Office 97 Mso97.dll

Microsoft Outlook 97 Msoutl97.olb

Microsoft PowerPoint 97 Msppt8.olb

Microsoft Word 97 Msword8.olb

Microsoft Access 2000 Msacc9.olb

Microsoft Jet Database 3.51 DAO360.dll

Microsoft Binder 2000 Msbdr9.olb

Microsoft Excel 2000 Excel9.olb

Microsoft Graph 2000 Graph9.olb

Microsoft Office 2000 Mso9.dll

Microsoft Outlook 2000 Msoutl9.olb

Microsoft PowerPoint 2000 Msppt9.olb

Microsoft Word 2000 Msword9.olb

Microsoft Access 2002 Msacc.olb

Microsoft Excel 2002 Excel.exe

Microsoft Graph 2002 Graph.exe

Microsoft Office 2002 MSO.dll

Microsoft Outlook 2002 MSOutl.olb

Microsoft PowerPoint 2002 MSPpt.olb

Microsoft Word 2002 MSWord.olb

Microsoft Office Access 2003 Msacc.olb

Microsoft Office Excel 2003 Excel.exe

Microsoft Graph 2003 Graph.exe

Microsoft Office 2003 MSO.dll

Microsoft Office Outlook 2003 MSOutl.olb

Microsoft Office PowerPoint 2003 MSPpt.olb

Microsoft Office Word 2003 MSWord.olb

提示:除了 Dao350.dll 、Dao360.dll和 Microsoft Office 10(MSO.dll),类型库默认位于:

C:\Program Files\Microsoft Office\Office (Office 2002 路径是 C:\...\Office10,Office 2003 路径是 C:\...\Office11),

Dao350.dll/Dao360.dll 默认位于 C:\Program Files\Common Files\Microsoft Shared\Dao。

Office 2002 的MSO.dll 默认 C:\Program Files\Common Files\Microsoft Shared\Office10, Office 2003 的MSO.dll位于

C:\Program Files\Common Files\Microsoft Shared\Office11

参考

222101 查找并使用Office对象模型文档

Microsoft Automation站点

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有