• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Web應(yīng)用中的ActiveX控件的創(chuàng)建與使用

      2015-03-15 05:33:37邢素萍
      微型電腦應(yīng)用 2015年12期
      關(guān)鍵詞:屬性控件對話框

      邢素萍

      ?

      Web應(yīng)用中的ActiveX控件的創(chuàng)建與使用

      邢素萍

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

      關(guān)鍵詞:控件、Web頁、屬性、對話框

      0 引言

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

      1 創(chuàng)建ActiveX控件

      ActiveX控件可以由任何語言實現(xiàn),最后生成的組件要遵循ActiveX技術(shù)規(guī)范,比如可以使用Visual Basic、C++、C等語言,微軟公司的Visual Studio系列開發(fā)套件可以較好的支持ActiveX。新版的ATL(活動模板庫)為COM組件的開發(fā)帶來了簡便方法,我們下面使用Visual Studio 2010團隊開發(fā)版(下文簡稱VS2010)創(chuàng)建一個最簡單的ActiveX,實現(xiàn)消息輪播的功能。建立ActiveX項目最常用的方式是使用VS2010項目向?qū)蒀OM組件的框架。使用向?qū)Э梢源蟠蠛喕_發(fā)工作,新建一個ALT項目的操作步驟如下:

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

      圖1 新建項目

      第2步:在“已安裝的模板”列表框中單擊“其他語言”|“Visual C++”|“ATL”項目。選擇右側(cè)的“ATL項目”,在“名稱”編輯框中輸入項目名稱“MessageBoard”,在“位置”編輯框中輸入項目保存的路徑。單擊“確定”按鈕,打開“ATL項目向?qū)А睂υ捒颉?/p>

      第3步:單擊“應(yīng)用程序設(shè)置”標(biāo)簽,勾選“允許合并代理/存根(stub)代碼”復(fù)選框,如圖2所示:

      圖2 ALT項目向?qū)?/p>

      單擊“完成”按鈕完成項目的創(chuàng)建。

      2 添加ATL控件

      接下來為COM對象添加一個ATL控件,使用“ATL控件”向?qū)Э梢院苋菀椎靥砑有翧TL控件,操作步驟如下:

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

      圖3 添加類對話框

      單擊“添加”按鈕,打開“ATL控件向?qū)А睂υ捒颉?/p>

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

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

      3 為控件添加屬性

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

      第1步:右鍵單擊“類視圖”列表框中的“IMsgBoardCtl”項目,選擇右鍵菜單“添加”|“添加屬性”命令,打開如圖5所示的“添加屬性向?qū)А贝翱凇?/p>

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

      圖4 添加屬性

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

      4 改寫相關(guān)函數(shù)

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

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

      圖5 定位OnDraw方法

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

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

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

      5 添加事件功能

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

      第1步:展開“類視圖”列表窗口中的類型庫“MessageBoardLib”。右鍵單擊“_IMsgBoard CtlEvents”接口,選擇右鍵菜單“添加”|“添加方法”命令,打開“添加方法向?qū)А睂υ捒颉?/p>

      第2步:在“添加方法向?qū)А睂υ捒虻摹胺祷仡愋汀绷斜砜蛑刑钊搿皏oid”。在“方法名稱”編輯框中填入“ClickIn”,勾上“參數(shù)屬性”下的“in”復(fù)選框,在“參數(shù)類型”下拉列表框中填入“LONG”,在“參數(shù)名”編輯框中填入“x”,單擊“添加”按鈕。重復(fù)添加參數(shù)操作,和第一遍不同的是在“參數(shù)名”編輯框中填入“y”。添加x、y兩個參數(shù)后單擊“完成”按鈕退出“添加方法向?qū)А睂υ捒?,如圖6所示:

      圖6 添加方法

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

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

      第5步:編譯項目,重新生成類型庫。選擇“生成”|“生成解決方案”命令,系統(tǒng)開始編譯構(gòu)建項目。生成完畢后,在“類視圖”列表框右鍵單擊“CMsgBoardCtl”項目,選擇右鍵菜單“添加”|“添加連接點”命令。打開“實現(xiàn)連接點向?qū)А睂υ捒颉kp擊“源接口”列表框中的“_IMsgBoardEvents”項目,“_IMsgBoardEvents”將出現(xiàn)在“實現(xiàn)連接點”列表框中,單擊“完成”按鈕退出。

      6 添加事件激發(fā)功能

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

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

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

      圖7 添加消息處理程序

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

      7 編譯生成控件

      到目前為止,添加代碼的工作已經(jīng)完成,將發(fā)布方式配置為Release。Release方式將去掉目標(biāo)代碼中的調(diào)試信息并做了一些優(yōu)化,發(fā)行版的產(chǎn)品通常采用這種方式,代碼體積變小并且運行速度快。構(gòu)造發(fā)行版的操作步驟如下:

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

      圖8 生成解決方案

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

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

      圖9 工程目錄

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

      8 使用ActiveX控件

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

      圖10 注冊組件

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

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

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

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

      9 總結(jié)

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

      參考文獻

      [1] 李躍峰,王文海.基于ActiveX技術(shù)的組態(tài)軟件Web服務(wù)功能的設(shè)計和實現(xiàn) [J].工業(yè)控制計算機,2007,07.

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

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

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

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

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

      中圖分類號:TP311

      文獻標(biāo)志碼:A

      猜你喜歡
      屬性控件對話框
      正?;謴?fù)虛擬機
      Bootlace Worms’Secret etc.
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      對兩種實體觀的探析
      青春歲月(2016年22期)2016-12-23 13:59:29
      用好文件“屬性” 解決實際問題
      論集體建設(shè)用地使用權(quán)的用益物權(quán)屬性
      關(guān)于公允價值本質(zhì)與特性的探析
      中國市場(2016年35期)2016-10-19 03:23:05
      快速抓取對話框中的完整信息
      電腦迷(2012年22期)2012-04-29 20:30:54
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
      慈溪市| 南乐县| 石阡县| 综艺| 阿克陶县| 靖西县| 赣州市| 正蓝旗| 阿克| 惠来县| 武穴市| 保德县| 门头沟区| 临湘市| 寻甸| 上栗县| 玉树县| 泗水县| 体育| 海阳市| 墨脱县| 当涂县| 绿春县| 五大连池市| 天水市| 浦东新区| 普定县| 林周县| 福清市| 故城县| 玉林市| 彭山县| 扎囊县| 色达县| 旅游| 多伦县| 威宁| 白玉县| 汽车| 林西县| 英超|