国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用ATL制作ActiveX控件及其使用

2017-06-05 15:02藺新華
電腦知識與技術 2017年10期
關鍵詞:通訊

藺新華

摘要:隨著軟件開發(fā)技術的發(fā)展,COM組件在現(xiàn)代編程中越來越重要,不懂得COM就很難跟上時代。COM為程序員開發(fā)Windows應用程序帶來了便利,而COM最令人矚目的實現(xiàn)就是ActiveX控件。該文介紹了如何用ATL技術制作輕量級的ActiveX控件,怎樣在客戶容器中與ActiveX控件通訊。

關鍵詞:COM;ATL;ActiveX;通訊

中圖分類號:TP3

文獻標識碼:A

文章編號:1009-3044(2017)10-0057-03

1.CoM,ActiveX和ATL概述

COM(Component Object Model,組件對象模型)是Windows操作系統(tǒng)的技術和核心,是搭建Windows應用程序的基礎,COM技術規(guī)范描述了一種創(chuàng)建組件即可重復使用的對象的方法,它提供了一種基于接口查詢的機制來完成對象之間的通訊,以客戶/服務器程序的體系結構協(xié)同完成特定的功能,COM已經(jīng)成為新世紀的Windows程序員必須掌握的技術,同時該技術已經(jīng)成為Microsoft公司開發(fā)方向的重點,COM技術最令人矚目的就是AcfiveX控件,ActiveX控件可以看作一種早期產(chǎn)品(即VBX)的延伸,同VBX相比,ActiveX定義了一個對程序設計語言中立的接口,ActiveX提供了如下的特性:

1.1語言的無關性

這使得基于Windows平臺的開發(fā)工具可以混用AcfiveX控件,例如你可以用C++編寫,而在Visual Basic中使用,達到二進制的設計標準。

1.2軟件版本升級的健壯性

ActiveX控件通過提供多接口機制支持軟件版本升級的健壯性,ActiveX控件的不同功能用不同的接口向外展示,要為舊的組件添加新的功能時,為組件新添加一個接口就行了,這樣舊的應用程序在不進行更新的情況下運行,同時新的應用程序可以通過查詢新接口利用組件的新功能。

1.3面向對象的特性

ActiveX控件允許以面向對象的方式傳遞其功能,AcfiveX控件提供三種基本的面向對象的特性,即封裝性、繼承性和多態(tài)性,并且是以一種語言無關的方式提供的。

1.4位置透明性

ActiveX控件的用戶并不需要明確的了解它所處的位置,它可能在一個DLL(同一進程)中,可能在一個EXE(不同進程)中,也可能在一個遠程計算機上(分布式組件對象)。

早期開發(fā)ActiveX控件時,必須用MFC類庫,與其相比,用ATL(Active Template Library,活動模板庫)開發(fā)ActiveX控件具有如下優(yōu)點:小型、快速、不依賴任何DLL文件,用ATL制作的ActiveX控件能更好地支持以上特性,現(xiàn)在,ATL逐漸成為未來的Windows程序開發(fā)中C++的框架,它已經(jīng)成為Visual c++開發(fā)環(huán)境的一部分,能更好地支持ActiveX的特性。

2.用ATL開發(fā)一個ActiveX控件

2.1建立工程

利用VC的向導新建一工程,工程類型為ATL COM Ap-pWizard,工程名為MyATLActiveX,單擊OK,進人下一步,選擇Dvnamic Hnk Library(DLL)服務類型,其他保持缺省設置。

2.2建立對象框架

將工作空間窗口切換到Class View面板,右鍵點擊MyAT-LActiveX Class,在彈出的菜單中選擇NewATLObject項,進人ATL Object Wizd向導,在向導第一步中選擇Coned類別和Full Control對象,單擊下一步,在接下來的下一步中對新建的COM對象的屬性進行設置,在Names頁的ShortName框中輸入組件的名字,我們輸入MyATLAcfiveXCfl,其它由向導自動填充;在Attributes頁中我們需要對COM對象的線程模型、接口類型等進行設置,我們設置如圖1:

單擊確定,生成MyATLActiveXCfl對象的框架,系統(tǒng)為我們添加了IMyATLActiveXCtl接口(輸入接口)、_IMyATL Ac-tiveXCflEvents接口(輸出接口)、MyATLActiveXCfl類、MyAT-LActiveX,idl文件(接口描述語言文件)。

2.3添加方法

2.5建立代理類

要使客戶容器能夠使用ActiveX控件的輸出函數(shù),必須為事件創(chuàng)建代理類,這是COM技術的規(guī)范,便于與組件通訊時數(shù)據(jù)的傳遞,在MyATLActiveXCtl類上單擊右鍵,在彈出的菜單中選擇Implement Connection Point項,進入連接點向導,如圖2所示,選擇_IMyATLActiveXCtlEvents接口,單擊OK按鈕,向導自動為我們添加了CProxy_IMyATLActiveXCtlEvents代理類及文件MyATLActiveXCP,h,并在此文件中實現(xiàn)了事件Fire_Re-turnData(short ResData)。

2.6重載OnDraw函數(shù)提供控件狀態(tài)的反饋

利用Windows API函數(shù)中的GDI函數(shù)繪出控件,控件的背景采用紅色,在控件中顯示一個標簽Data和若干蘭色小方框,小方框的個數(shù)由方法SetData的參數(shù)決定。

選擇Builder菜單下的Builder MyATLActiveX,dll,完成Ac-tiveX控件的編譯、注冊。

3.在容器中與ActiveX通訊

3.1建立工程

利用VC的向導新建基于Dialog based的工程,工程名為MyActiveXCon,其它保持缺省設置。

3.2設計界面

首先要做的是在對話框中安置ActiveX控件,右擊對話框,在菜單中選擇Insert AcitveX Control項,在對話框中選定MyAT-LActiveX Control項,再按OK,則剛建立的ActiveX控件出現(xiàn)在對話框中,調整其到合適位置和大小。

下一步是將對話框和組件連在一起,在可以與MyATLAc-tiveX控件通訊(調用控件或從中接收事件)之前,必須將它添加到項目中,為此,可通過類向導為控件添加一個成員變量,從View菜單中選ClassWizard項,在MFC ClassWizard對話框中選Member Variables頁;選擇ActiveX控件的ID:IDC_MYAT-LACTIVEXCTLl,再選Add Varible按鈕,出現(xiàn)Confirm Classes對話框(見圖3),接受默認值并按OK,出現(xiàn)Add Member Vari-able對話框,可將此變量命名為m_MyControl,再按OK,你會發(fā)現(xiàn)CMyATLActiveX類現(xiàn)在已是項目的一部分了。

3.3響應事件

響應來自ActiveX控件的事件,右擊對話框,在彈出的菜單中選擇Events項,在彈出的對話框中的Object to Handlers列表框中選擇IDC_MYATLACTIVEXCTLl,在事件列表框中選擇我們上面建立的事件ReturnData,然后單擊Add and Exit,系統(tǒng)自動為我們把事件處理函數(shù)添加到項目中,我們把此函數(shù)進一步完善(黑體部分為自己加入)。

響應來自窗體的事件,雙擊對話框資源上的單選按鈕,系統(tǒng)自動為我們把事件處理函數(shù)添加到項目中,我們把此函數(shù)進一步完善(黑體部分為自己加人)。

本程序在VC++6.0下調試通過,運行結果如圖4所示,用鼠標單擊不同的單選按鈕,ActiveX控件中蘭色小方框的數(shù)目隨著改變,同時反映從控件返回信息的只讀文本框的內容也隨著變化,從而實現(xiàn)了與控件的通訊。

猜你喜歡
通訊
《茶葉通訊》簡介
《茶葉通訊》簡介
通訊報道
《茶葉通訊》簡介
《茶葉通訊》簡介
關于加注“通訊作者”的要求
科技與通訊
本期通訊之星:郭雨薇
本期通訊之星:王寧
通訊簡史
尚志市| 肇州县| 布尔津县| 泰来县| 镇原县| 灵山县| 佛教| 拜城县| 土默特右旗| 海晏县| 灵宝市| 黄陵县| 达州市| 娱乐| 惠安县| 自治县| 贺兰县| 称多县| 高阳县| 河东区| 苏尼特左旗| 吴川市| 旺苍县| 南部县| 金乡县| 漳平市| 马边| 临武县| 藁城市| 长宁县| 德兴市| 留坝县| 确山县| 孝义市| 利川市| 昆明市| 出国| 绍兴市| 新蔡县| 平远县| 简阳市|