999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Web應用中的ActiveX控件的創建與使用

2015-03-15 05:33:37邢素萍
微型電腦應用 2015年12期

邢素萍

?

Web應用中的ActiveX控件的創建與使用

邢素萍

摘要:介紹了微軟公司提出的廣泛應用于桌面及Web應用中的ActiveX工具集合的創建與使用。ActiveX控件是基于組件對象模型(COM)的可重用軟件組件,有了它在網頁和桌面應用程序中加入特殊的功能會很方便。使用VS2010創建了一個ActiveX控件包含為控件添加屬性;改寫相關函數;添加事件功能與添加事件激發功能等方法。使用ActiveX控件可豐富編程語言功能,拓寬Web程序的應用領域。

關鍵詞:控件、Web頁、屬性、對話框

0 引言

ActiveX是微軟公司提出的一套二進制組件發布方案、實現規范和工具集合的總稱。目的是實現軟件二進制級別的兼容和復用,解決了軟件技術發展的早期,各種不同語言及不同編譯器創建的軟件在二進制級別不能互訪的問題。ActiveX控件與自動化編程語言間存在非常密切的聯系,其主要的目標之一就是豐富編程語言功能。ActiveX 控件是基于組件對象模型(COM)的可重用軟件組件,廣泛應用于桌面及Web應用中。

1 創建ActiveX控件

ActiveX控件可以由任何語言實現,最后生成的組件要遵循ActiveX技術規范,比如可以使用Visual Basic、C++、C等語言,微軟公司的Visual Studio系列開發套件可以較好的支持ActiveX。新版的ATL(活動模板庫)為COM組件的開發帶來了簡便方法,我們下面使用Visual Studio 2010團隊開發版(下文簡稱VS2010)創建一個最簡單的ActiveX,實現消息輪播的功能。建立ActiveX項目最常用的方式是使用VS2010項目向導生成COM組件的框架。使用向導可以大大簡化開發工作,新建一個ALT項目的操作步驟如下:

第1步:在VS2010主界面窗口中,選擇菜單欄“新建”|“項目”命令,打開“新建項目”對話框,如圖1所示:

圖1 新建項目

第2步:在“已安裝的模板”列表框中單擊“其他語言”|“Visual C++”|“ATL”項目。選擇右側的“ATL項目”,在“名稱”編輯框中輸入項目名稱“MessageBoard”,在“位置”編輯框中輸入項目保存的路徑。單擊“確定”按鈕,打開“ATL項目向導”對話框。

第3步:單擊“應用程序設置”標簽,勾選“允許合并代理/存根(stub)代碼”復選框,如圖2所示:

圖2 ALT項目向導

單擊“完成”按鈕完成項目的創建。

2 添加ATL控件

接下來為COM對象添加一個ATL控件,使用“ATL控件”向導可以很容易地添加新ATL控件,操作步驟如下:

第1步:選擇菜單欄“視圖”|“類視圖”命令,打開“類視圖”列表框。在其中右鍵選擇“MessageBoard”項目,選擇右鍵菜單“添加”|“類”命令,打開“添加類”對話框。第2步:選擇“類別”列表框中的“ATL”項目,選擇“模板”列表框中的“ATL控件”項目,如圖3所示:

圖3 添加類對話框

單擊“添加”按鈕,打開“ATL控件向導”對話框。

第3步:單擊“名稱”標簽,在“簡稱”編輯框中輸入“MsgBoardCtl”(不包括引號)。

第4步:單擊“選項”標簽,勾選“連接點”復選框。單擊“外觀”標簽,勾選“可插入”復選框,單擊“完成”按鈕完成控件的添加操作。

3 為控件添加屬性

到目前為止,已經添加了一個ActiveX控件,此時先來編譯一次項目。選擇“生成”|“生成解決方案”命令,項目開始編譯并構建。編譯完成后為MsgBoardCtl控件添加一個屬性,用于保存外部傳入的消息文本,操作步驟如下:

第1步:右鍵單擊“類視圖”列表框中的“IMsgBoardCtl”項目,選擇右鍵菜單“添加”|“添加屬性”命令,打開如圖5所示的“添加屬性向導”窗口。

第2步:單擊“屬性類型”下拉列表框的下三角按鈕,選擇“BSTR”項目。在“屬性名”編輯框中輸入“msgText”,如圖4所示:

圖4 添加屬性

單擊“完成”按鈕完成操作。

4 改寫相關函數

開發環境默認生成的代碼并不能完成本例所要完成的具體任務,因此需要重寫相關函數或方法。這里實現的功能是在控件被重繪時將消息文本輸出在屏幕上,需要重寫OnDraw方法。操作步驟如下:

第1步:在“類視圖”列表框中找到“OnDraw”方法并雙擊,如圖5所示:

圖5 定位OnDraw方法

此時代碼編輯器中的光標定位到OnDraw方法的代碼中,將OnDraw方法中原有的代碼全刪除,然后添加OnDraw方法代碼。

第2步:在文件“MsgBoardCtl.h”中找到構造函數CMsgBoardCtl()并修改,實現對成員變量m_bstrMessag的初始化。

第3步:選擇菜單欄“視圖”|“解決方案資源管理器”命令,在“解決方案資源管理器”列表框中雙擊打開“MsgBoardCtl.cpp”文件。找到“get_msgText”方法和“put_msgText”方法并修改。

5 添加事件功能

ActiveX控件可以處理消息,借此實現用戶交互。為控件MsgBoardCtl添加事件傳出功能,當用戶在控件上單擊時,將單擊事件傳遞給控件容器。操作步驟如下:

第1步:展開“類視圖”列表窗口中的類型庫“MessageBoardLib”。右鍵單擊“_IMsgBoard CtlEvents”接口,選擇右鍵菜單“添加”|“添加方法”命令,打開“添加方法向導”對話框。

第2步:在“添加方法向導”對話框的“返回類型”列表框中填入“void”。在“方法名稱”編輯框中填入“ClickIn”,勾上“參數屬性”下的“in”復選框,在“參數類型”下拉列表框中填入“LONG”,在“參數名”編輯框中填入“x”,單擊“添加”按鈕。重復添加參數操作,和第一遍不同的是在“參數名”編輯框中填入“y”。添加x、y兩個參數后單擊“完成”按鈕退出“添加方法向導”對話框,如圖6所示:

圖6 添加方法

第3步:因為在此使用了老版本的導入庫,此時項目編譯鏈接會出兩個小問題,所以須將項目配置為使用多字節字符集而不是unicode字符集,并設置C++默認內置字符類型為多字節。右鍵單擊“類視圖”列表框中的項目名稱“MessageBoard”,選擇右鍵菜單“屬性”命令,打開“屬性頁”對話框。在左邊的列表框中選擇“配置屬性”|“常規”項目,選擇右邊列表框中的“項目默認值”|“字符集”下拉列表框中的“使用多字節字符集”。

第4步:選擇“屬性頁”左邊列表框中的“配置屬性”|“C/C++”|“語言”項目。單擊右邊列表框中的“將wchar_t視為內置類型”下拉列表框的下三角按鈕,選擇“否(/Zc:wchar_t-)”,單擊“確定”按鈕關閉“屬性頁”對話框。

第5步:編譯項目,重新生成類型庫。選擇“生成”|“生成解決方案”命令,系統開始編譯構建項目。生成完畢后,在“類視圖”列表框右鍵單擊“CMsgBoardCtl”項目,選擇右鍵菜單“添加”|“添加連接點”命令。打開“實現連接點向導”對話框。雙擊“源接口”列表框中的“_IMsgBoardEvents”項目,“_IMsgBoardEvents”將出現在“實現連接點”列表框中,單擊“完成”按鈕退出。

6 添加事件激發功能

為了能夠激發事件,必須讓控件響應鼠標相關消息,并在消息處理程序中將事件傳遞給控件容器。如此外部的容器代碼就能感知發生在控件中鼠標單擊事件,添加事件激發功能的操作步驟如下:

第1步:右鍵單擊“類視圖”列表框中的“CMsgBoardCtl”項目,選擇右鍵菜單“屬性”命令,打開“屬性”窗口。單擊“消息”按鈕,在消息列表框中找到“WM_LBUTTON

-DOWN”項目,雙擊其右邊的空白表項,VS2010自動添加該消息處理程序并命名為“OnLButtonDown”,如圖7所示:

圖7 添加消息處理程序

第2步:打開“MsgBoardCtl.cpp”文件,修改“OnLButton -Down”方法。

7 編譯生成控件

到目前為止,添加代碼的工作已經完成,將發布方式配置為Release。Release方式將去掉目標代碼中的調試信息并做了一些優化,發行版的產品通常采用這種方式,代碼體積變小并且運行速度快。構造發行版的操作步驟如下:

第1步:單擊工具欄上的“解決方案配置”列表框的下三角按鈕,選擇“Release”項目,如圖8所示:

圖8 生成解決方案

第2步:驟設置項目字符集屬性。第3步:選擇菜單欄“生成”|“生成解決方案”命令,VS2010開始編譯構建MessageBoard控件。

其中“F9C695B2-5569-4F28-88FD-D9EB4E41055E”為控件“MsgBoardCtl”的GUID(全球唯一標識符,此串與讀者文件中的不相同)。記下該字符串,這是在Web頁中插入MsgBoardCtl控件時需要使用到該標識符。到當前工程目錄下的Realese文件夾中,找到名為MessageBoard.dll的文件,它就是最后產出的程序組件,如圖9所示:

圖9 工程目錄

將該文件復制到一個安全的文件夾中,以便在Web頁中使用ActiveX控件。

8 使用ActiveX控件

前面使用VS2010創建了一個ActiveX組件。該組件在機器上注冊以后即可在各種支持ActiveX組件的地方使用,其中也包括Web頁。嵌入在Web頁中的ActiveX控件可以和JavaScript交互。開始使用一個新的ActiveX控件之前必須先在機器上注冊如圖10所示:

圖10 注冊組件

注冊MessageBoard組件的操作步驟如下:

第1步:單擊“開始”菜單,選擇“運行”命令,打開“運行”對話框。

第2步:在“打開”編輯框中輸入regsvr32加空格加MessageBoard.dll文件的完整路徑名,筆者已經將該文件復制到C盤的根目錄下。因此輸入的命令應該為“regsvr32

另一種使用ActiveX組件的方式是使用標簽。本文將采用這種方式,將上前面創建的MessageBoard組件嵌入到HTML文檔中。

9 總結

ActiveX控件可以解決網頁程序無法操作客戶端硬件的問題,使用它可拓寬了Web程序的應用領域。但ActiveX控件能否正常使用還要受瀏覽器設置的影響。如果在瀏覽器端禁用了ActiveX控件,相應功能將無法實現。可以事先設置好瀏覽器屬性,對于其他的網站,可以提示用戶設置瀏覽器屬性以便允許ActiveX控件的啟用。

參考文獻

[1] 李躍峰,王文海.基于ActiveX技術的組態軟件Web服務功能的設計和實現 [J].工業控制計算機,2007,07.

[2] 樂丹,黃明和,羅文兵.ActiveX Scripting技術在組態軟件中的應用[J]. 工業控制計算機,2008(1):44-45.

[3] 周峰.Ajax開發技術原理與實踐教程[M].北京:電子工業出版社,2011,9.

[4] [4] 夏幫貴.JavaWeb開發完全掌握[J].北京:中國鐵道出版社,2011,7.(收稿日期:2015.09.25)

作者簡介:邢素萍(1957-),女,南京工業職業技術學院,教授,研究方向:計算機軟件設計與軟件開發應用,南京,210000

文章編號:1007-757X(2015)12-0074-03

中圖分類號:TP311

文獻標志碼:A

主站蜘蛛池模板: 怡春院欧美一区二区三区免费| 中文字幕佐山爱一区二区免费| 青青草原国产一区二区| 日韩a级毛片| 久久99热这里只有精品免费看| a国产精品| 久热re国产手机在线观看| 久久人妻系列无码一区| 免费无码一区二区| 日韩123欧美字幕| 亚洲天堂网在线观看视频| 亚洲欧美在线综合一区二区三区| 国内精自线i品一区202| 极品私人尤物在线精品首页 | 欧美性精品| 国产欧美日韩综合一区在线播放| 日本色综合网| 久久青草免费91观看| 综合久久久久久久综合网| 色成人亚洲| 无码网站免费观看| 97国产精品视频人人做人人爱| 日韩免费成人| 日韩精品无码免费一区二区三区| 无码电影在线观看| 成人一区在线| 久久婷婷六月| 国产91精选在线观看| 四虎影视永久在线精品| 欧美成人亚洲综合精品欧美激情| 麻豆国产精品| 国产地址二永久伊甸园| 伦精品一区二区三区视频| www成人国产在线观看网站| 99国产在线视频| 午夜精品影院| 欧美黄色网站在线看| 午夜精品影院| 精品视频福利| 国产精品女熟高潮视频| 精品久久久久久久久久久| 国产微拍精品| 欧美成人第一页| 高清不卡毛片| 久久精品亚洲热综合一区二区| 国产91麻豆视频| 99热这里只有成人精品国产| 久久特级毛片| 国产一级裸网站| 99视频精品全国免费品| 91免费观看视频| 久久无码av一区二区三区| 国产一区三区二区中文在线| 人人91人人澡人人妻人人爽| 青青操视频在线| 国产尹人香蕉综合在线电影| 国产麻豆精品久久一二三| 日韩无码精品人妻| 麻豆国产在线不卡一区二区| 日韩一区二区三免费高清| 精品精品国产高清A毛片| 国产精品久久久久鬼色| 欧美一区国产| 伊人天堂网| 国产日韩精品欧美一区灰| 亚洲欧美成aⅴ人在线观看| 欧美综合激情| 国产国语一级毛片在线视频| 国产综合无码一区二区色蜜蜜| 亚洲成aⅴ人在线观看| 在线另类稀缺国产呦| 91探花在线观看国产最新| 99这里只有精品在线| 谁有在线观看日韩亚洲最新视频 | 在线亚洲小视频| 国产亚洲视频免费播放| 成人在线不卡视频| 国产精女同一区二区三区久| 国产主播福利在线观看| 91伊人国产| 精品伊人久久久大香线蕉欧美| 亚洲天堂视频网站|