程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC中通過自動化客戶端操作Word2000

VC中通過自動化客戶端操作Word2000

編輯:vc教程

  我們在編寫程序,開發軟件的過程中如果能利用已有的程序的功能,那麼可以大大減輕開發過程中程序員的工作量,同時達到事半功倍的效果。例如在工程中,許多軟件需要文字處理功能,雖然MFC提供了一些方法,但是具體實現起來既費事,又有一定的困難,如果我們可以直接使用OFFICE提供的功能,豈不美哉!要實現這一目的,只需要利用微軟的ActiveX Automation技術就可以輕松實現。本例主要講述了自動化的概念,並通過一個操作Word文檔的程序來幫助讀者朋友理解Visual C++編程中如何實現自動化。

  一、實現方法

  1.自動化的概念

  在Windows程序開發中,自動化是基於COM/DCOM之上的技術:它可以使一個應用程序來操縱另外一個程序中的對象,使用該程序提供的豐富的功能;或者是一個應用程序通過提供一些對象及對象的方法和屬性來允許另外一個程序使用它提供的各種功能。其中,根據程序是受惠者還是施惠者這一原則,將提供對象和對象屬性方法的應用程序稱為自動化服務器端;使用對象屬性方法的應用程序叫作自動化的客戶端。自動化服務器讓其它程序告訴它做些什麼,它揭示的函數和數據稱為方法(Methods)和屬性(Properties)。例如Microsoft Office套件中的成員Word、Excel等都是自動化服務器。根據自動化的客戶端和服務器端的不同位置,又可以將自動化分為兩類:

  1)如果作為服務器端和客戶端的兩個不同的應用程序都在同一台計算機上,叫作本地自動化;

  2)如果作為服務器端和客戶端的兩個不同的應用程序是基於網絡的,分別處於不同的計算機上,叫作遠程自動化。

  需要讀者朋友注意的是,由於利用了COM技術,客戶端無法直接獲得服務器端的對象來實現對它的訪問,它必須通過獲取一個指向接口的指針來使用對象提供的功能。這個接口稱為IDispatch,它是一個簡化的使用多種不同語言的特殊接口(包括象Visual Basic這樣不能使用指針的語言)。這部分內容讀者可以在下面的程序實現過程中細細體味。

  說到自動化,不能不提一下ActiveX控件,它其實是在進程中裝入的極小自動化服務器。這意味著它們的執行速度極快,它們原來被稱為OLE自定義控件,用來替代VB和Visual C++中使用的16位的VBX控件。由於ActiveX控件通常被保存為.OCX文件,所以又稱它為OCX控件。因為控件是一個小型化的自動化服務器,它們需要在自動化客戶端使用,我們又將這時的客戶端應用程序稱為容器應用程序。ActiveX控件除了屬性和方法外,還包含事件(events),當一些事情需要容器應用程序注意時,控件才會觸發一個事件,如用戶的單擊等。

  2.自動化中的數據類型

  在實現自動化編程中,最重要的一個問題是程序員要明白在自動化的客戶端和服務器端數據是如何傳遞的。如何提供一個統一安全的機制來實現數據傳遞呢?在Visual C++開發平台上,它提供了一個叫VARIANT的數據類型來解決這個問題。該數據類型有兩部分組成,第一部分為數據的類型,第二部分才是具體的數據的數值。在VARIANT數據類型的基礎上,VC提供了ColeVariant類,它對VARIANT數據類型進行了封裝,這意味著在所有使用VARIANT的地方都可以使用ColeVariant類的對象。在操作日期和貨幣變量時,Visual C++又提供了兩個類:ColeCurrency和ColeDateTime,具體的內容,讀者可以參考MSDN。

  本實例的代碼演示了如何操作Word2000實現自動化,由於我們主要是為了輔助解釋說明Visual C++編程中怎樣實現自動化,幫助讀者對自動化的實現過程有一個感性的認識,所以為了簡單起見,該程序的功能是僅僅選擇一個Word2000的*.Doc文檔,並將它的內容都在該程序的"視"中顯示出來。為了達到這個目的,就需要啟動Word2000打開用戶所選擇的文件,進行全選和剪貼板操作,然後將數據粘貼到"視"中。

  在這個例子的具體實現中,我們的應用程序為自動化的客戶端,Word2000為自動化的服務器端。首先生成一個新的單文檔應用程序,視的基類選擇CEditView,由於Office中的許多操作是由VBA語言來實現的,所以我們在使用自動化操作Word2000的過程中,為了清楚Word2000的工作過程,我們要對VBA有所了解,這些知識可以通過在Word中錄制宏來實現。錄制宏的步驟如下:啟動Word2000,選擇工具菜單下的錄制宏子菜單,為一個新的宏起個名字為Macro1,開始錄制宏,這時候窗口出現一個浮動工具條,點擊上面的按鈕可以停止或暫停宏的錄制。下面是實現打開一個Word2000文檔、全部選擇文檔內容並將數據存放到剪貼板上的操作的宏代碼:

' Sub Macro1()
'' 宏在 02-5-1 由 LiuTao 錄制
'
Documents.Open FileName:="基於Visual C.doc", ConfirmConversions:=False, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto
Selection.WholeStory
Selection.Copy
End Sub

  查看宏代碼可以點擊Word2000中工具菜單下的Visual Basic 編輯器。從上面的代碼中可以看出對Word2000的這幾個操作用到了Documents、Selection這兩個自動化服務器端顯示出來的對象和它們的方法。

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