ActiveX開發1

Preface

      因爲項目需要,開始從事ActiveX方面的工作,看了一些資料,可惜都是些COM原理方面的,沒有切合實際動手的東西,在CodeProject上讀完David Marcionek的文章【1】後,收穫良多,但也遇到一些惱人的小問題,因此在其基礎上就一些易錯點做些小注解。本文版權歸David Marcionek所有。

簡介 

本文目的在於讓你快速掌握ActiveX控件開發技術,將會展示開發ActiveX應該知道的基本概念,如方法,屬性和事件,以及如何在一個ActiveX控件和一個web頁面之間進行通信

在本文中,我們將創建一個ActiveX控件,當加載控件時,它會顯示一個動畫進度條,以便向用戶表明控件正在加載。此控件會包含展示如何在控件和web頁面間傳遞信息的功能。下面我們會使用VS2005一步步進行開發的。

創建一個ActiveX控件

爲了創建一個ActiveX控件,如下所示:

1,創建一個"MFC ActiveX Control"項目,取名MyActiveX,

 

2,在"MFC ActiveX Control Wizard"對話框中,選中"Control Settings"

3,"Create control based on"中選擇"STATIC".我們將使用靜態控件,因爲我們只是顯示從控件中獲取的輸出信息,並不接受輸入信息。

4,在"Additional features"中,確保"Activates when visible""Flicker-free activation"被選中,"Has an About box dialog"不選中。

5,默認情況下,wizard會創建一個項目,使其在一個共享DLL中使用MFC.我們必須更改這種情況,因爲除非所需的MFC DLL都已經在系統中安裝了,否則ActiveX控件就不能運行。包含ActiveX控件的Web頁面上出現紅叉的一個原因就是此。在項目的屬性中,"Configuration Properties"-->"General",“Use of MFC” 改爲“Use MFC in a Static Library”.

6,嚮導會創建如下幾個類:

      1)CMyActiveXApp:這是ActiveX應用程序類,從COleControlModule類繼承下來的。它是OLE控件模塊對象繼承自的基類,包含了初始化(InitInstance)和清理(ExitInstance)的代碼

      2)CMyActiveXCtrl:COleControl繼承而來,這裏是我們實現控件大部分功能的地方。

      3)CMyActiveXPropPage:COlePropertyPage繼承而來,用於管理控件的屬性頁對話框。嚮導已經爲我們創建了一個默認的對話框來作爲控件的屬性頁對話框。

 

增加動畫GIF支持

      這裏我們使用了一個CPictureEx類(具體代碼見最後的資源部分),vs2005增加一個動畫GIF資源有一個bug(其實在vs2008中也存在),我們可以使用下面這種技巧來回避它:

ProcessingProgressBar.gif拷貝到項目文件夾下,然後更名爲ProcessingProgressBar.gaf在資源視圖中,右鍵資源文件MyActiveX.rc,選擇添加資源。在添加資源對話框中,按下導入按鈕,並選擇ProcessingProgressBar.gaf文件。在自定義資源類型對話框中輸入“GIF”作爲資源類型。這就會將GIF圖片文件導入項目中。然後將導入的圖片IDIDR_GIF1 改爲IDR_PROGRESSBAR.

現在開始着手恢復原狀,首先,打開MyActiveX.rc的源文件,找到IDR_PROGRESSBAR的定義,將其文件名改爲 ProcessingProgressBar.gif”.同樣地,把項目文件夾下的圖片文件名也改回爲“ProcessingProgressBar.gif”,最後在解決方案資源管理器視圖中,選中ProcessingProgressBar.gaf,在其屬性中,修改相對路徑 ."ProcessingProgressBar.gif”.

增加對話框

      現在,我們爲進度條圖像增加一個對話框。

1, 資源視圖中,右鍵對話框,選擇插入對話框來創建一個默認的對話框。

2, 刪除默認產生的確定取消按鈕,調整對話框大小爲230*40

3,更改對話框IDIDD_MAINDIALOG,並修改對話框屬性:Border—none, Style – Child, System Menu – False, Visible – True.

4,在對話框中加入一個圖片控件,調整其大小爲200*20,更改控件IDIDC_PROGRESSBAR,顏色爲“white”

5,爲對話框創建一個類,名爲CMainDialog,

現在我們爲類增加成員變量:

1,CMyActiveXCtrl類增加一個變量m_MainDialog,類型爲CMainDialog

2, CMainDialog類增加一個變量m_ProgressBar,類型爲CPictureEx,這裏注意確保控件變量選中,並且對於的控件是”IDC_PROGRESSBAR”.

 

增加支持代碼

好了,現在加入一些代碼來繪製主對話框和進度條控件吧。

1,爲CMyActiveXCtrl處理WM_CREATE事件的代碼,在其中加入:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章