亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        邢素萍

        ?

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

        邢素萍

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

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

        0 引言

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

        1 創(chuàng)建ActiveX控件

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

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

        圖1 新建項(xiàng)目

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

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

        圖2 ALT項(xiàng)目向?qū)?/p>

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

        2 添加ATL控件

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

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

        圖3 添加類對(duì)話框

        單擊“添加”按鈕,打開“ATL控件向?qū)А睂?duì)話框。

        第3步:?jiǎn)螕簟懊Q”標(biāo)簽,在“簡(jiǎn)稱”編輯框中輸入“MsgBoardCtl”(不包括引號(hào))。

        第4步:?jiǎn)螕簟斑x項(xiàng)”標(biāo)簽,勾選“連接點(diǎn)”復(fù)選框。單擊“外觀”標(biāo)簽,勾選“可插入”復(fù)選框,單擊“完成”按鈕完成控件的添加操作。

        3 為控件添加屬性

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

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

        第2步:?jiǎn)螕簟皩傩灶愋汀毕吕斜砜虻南氯前粹o,選擇“BSTR”項(xiàng)目。在“屬性名”編輯框中輸入“msgText”,如圖4所示:

        圖4 添加屬性

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

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

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

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

        圖5 定位OnDraw方法

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

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

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

        5 添加事件功能

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

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

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

        圖6 添加方法

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

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

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

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

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

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

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

        圖7 添加消息處理程序

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

        7 編譯生成控件

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

        第1步:?jiǎn)螕艄ぞ邫谏系摹敖鉀Q方案配置”列表框的下三角按鈕,選擇“Release”項(xiàng)目,如圖8所示:

        圖8 生成解決方案

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

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

        圖9 工程目錄

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

        8 使用ActiveX控件

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

        圖10 注冊(cè)組件

        注冊(cè)MessageBoard組件的操作步驟如下:

        第1步:?jiǎn)螕簟伴_始”菜單,選擇“運(yùn)行”命令,打開“運(yùn)行”對(duì)話框。

        第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)功能將無法實(shí)現(xiàn)。可以事先設(shè)置好瀏覽器屬性,對(duì)于其他的網(wǎng)站,可以提示用戶設(shè)置瀏覽器屬性以便允許ActiveX控件的啟用。

        參考文獻(xiàn)

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

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

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

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

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

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

        中圖分類號(hào):TP311

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

        熟女肥臀白浆一区二区| 日韩欧美第一区二区三区| 亚洲红杏AV无码专区首页| 男女啪啪啪的高清视频| 视频一区视频二区制服丝袜| 性欧美牲交xxxxx视频欧美 | 久久久久久久妓女精品免费影院 | 亚洲免费av第一区第二区| av日韩一区二区三区四区| 欧美成人在线视频| 国产精品麻豆综合在线| 久久精品国产亚洲av热九九热| 亚洲美女毛多水多免费视频| 国产又色又爽又高潮免费视频麻豆| 999国产一区在线观看| 中文字幕人妻少妇美臀 | 久久精品国产亚洲av无码偷窥| 国产人妻久久精品二区三区| 亚洲中文字幕av天堂| 中文字幕乱码人妻在线| 99久久99久久久精品齐齐| 无码一区二区三区老色鬼| 人妻中文字幕不卡精品 | 在线视频一区二区在线观看 | 国产午夜精品av一区二区麻豆| 国产精品天天狠天天看| 爱v天堂在线观看| 亚洲精品偷拍自综合网| 国产男女猛烈无遮挡免费网站| 狠狠色噜噜狠狠狠97影音先锋| 日韩极品免费在线观看| 国产精选自拍视频网站| 日产国产精品亚洲系列| 国产96在线 | 免费| 日本高级黄色一区二区三区 | 国产性一交一乱一伦一色一情| 最新手机国产在线小视频| 亚洲av老熟女一区二区三区| 性裸交a片一区二区三区| av超碰在线免费观看| 蜜桃视频永久免费在线观看|