Welcome

首页 / 软件开发 / C++ / 如何使用MFC和类型库创建自动化项目

如何使用MFC和类型库创建自动化项目2011-04-25 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 FilesMicrosoft OfficeOfficeExcel8.olb).如果你自动化Microsoft Excel 2000,选择位于 C:Program FilesMicrosoft OfficeOfficeExcel9.olb 的Microsoft Excel 9.0 对象库。

如果你自动化Microsoft Excel 2002和Microsoft Office Excel 2003 ,对 象库内含在Excel.exe中,Office 2002的Excel.exe 默认位于 C:program FilesMicrosoft OfficeOffice10Excel.exe, Office 2003的Excel.exe 默认位于 C:program FilesMicrosoft OfficeOffice11Excel.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将退出。