程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 如何使用MFC和類型庫創建自動化項目

如何使用MFC和類型庫創建自動化項目

編輯:關於VC++

摘要

本文詳細介紹了如何自動化像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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved