資源描述:
《VC隨筆ActiveX控件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、VC隨筆ActiveX控件ActiveX、OLE和COM:COM(ComponentObjectModel)即組件對(duì)象模型是用來(lái)解決Windows程序模塊之間相互通信的標(biāo)準(zhǔn)方法,是Windows統(tǒng)一的、可擴(kuò)充的、面向?qū)ο蟮耐ㄐ艆f(xié)議。COM是一種協(xié)議,建立了一個(gè)軟件模塊同另一個(gè)軟件模塊之間的連接,然后將其描述出來(lái)。當(dāng)這種連接建立起來(lái)后,兩個(gè)軟件模塊之間就可以通過(guò)一個(gè)稱為“接口”的機(jī)制來(lái)進(jìn)行通信。OLE(ObjectLinking&Embedded)是指對(duì)象的鏈接與嵌入技術(shù)。是可嵌入的組件對(duì)象模型(COM),它是作為一個(gè)
2、進(jìn)程中的服務(wù)器的動(dòng)態(tài)鏈接庫(kù)來(lái)實(shí)線的。(可以將被使用的控件稱為服務(wù)器,而使用控件的應(yīng)用程序就是客戶程序或者容器程序。)雖然OLE控件是通過(guò)DLL來(lái)實(shí)現(xiàn)的,但不僅止于此。OLE控件還是一個(gè)獨(dú)立的對(duì)象,它可以激起和響應(yīng)事件、處理消息,它具有唯一的屬性,并且它有多線程能力。OLE控件不能獨(dú)立存在,需要嵌入到容器中去。ActiveX控件是在其他應(yīng)用程序中可以使用的,而且與應(yīng)用程序無(wú)關(guān)的小型動(dòng)態(tài)鏈接庫(kù),是OLE控件的子集。能夠用于Internet應(yīng)用程序,當(dāng)然也可以運(yùn)行在非Internet應(yīng)用程序中。和普通的Windows控件一
3、樣,ActiveX控件也是一個(gè)子窗口,通常是對(duì)話框的子窗口。包含ActiveX控件的窗口稱為包容器。(1)如果要在對(duì)話框中加入一個(gè)ActiveX控件,和加入一個(gè)普通的Windows控件一樣,只要在對(duì)話框編輯器中,將ActiveX控件放在適當(dāng)?shù)奈恢?,并在資源模板中表示該ActiveX控件即可。(2)如果要在程序中動(dòng)態(tài)地建立ActiveX控件,則可以調(diào)用相應(yīng)類的Create成員函數(shù)。ActiveX控件不像普通的控件那樣,發(fā)送以WM_打頭的通知消息給它的包容器窗口,而是“激發(fā)事件”。在一般情況下,一個(gè)或多個(gè)ActiveX控
4、件會(huì)保存在一個(gè)動(dòng)態(tài)鏈接庫(kù)中,但這種動(dòng)態(tài)鏈接庫(kù)的文件擴(kuò)展名通常為OCX,而不是DLL。包容器通過(guò)Windows注冊(cè)表,利用COM技術(shù)在需要的時(shí)候動(dòng)態(tài)地載入動(dòng)態(tài)鏈接庫(kù)。屬性、方法和事件:ActiveX控件有三個(gè)重要的屬性集:屬性(Property)、方法(Method)和事件(Event)。作個(gè)簡(jiǎn)單的類比,屬性好比成員變量;方法就是成員函數(shù);而事件則允許控件向容器應(yīng)用程序發(fā)送相應(yīng)的消息。屬性是ActiveX控件的特性或特征,用戶可以訪問(wèn)或設(shè)置這些屬性。用戶可以定制屬性或使用庫(kù)存屬性。ActiveX控件的10個(gè)庫(kù)存屬性:A
5、ppearance、BackColor、BorderStyle、Caption、Enabled、Font、ForeColor、hWnd、ReadyState。方法是控件訪問(wèn)其本身功能的函數(shù)。能夠提供訪問(wèn)ActiveX控件的屬性和數(shù)據(jù)的訪問(wèn)函數(shù)。方法可以是庫(kù)存的也可以是定制的。庫(kù)存方法可以訪問(wèn)庫(kù)存屬性(顏色、字體等),定制方法可以訪問(wèn)定制屬性。對(duì)應(yīng)屬性的庫(kù)存方法分為Get方法和Set方法,如shorGetAppearance()、voidSetAppearance(shortsApear)等。MFC提供了兩個(gè)庫(kù)存方法,
6、Doclick方法和Refresh方法。使用Doclick方法可以向容器程序激起一個(gè)鼠標(biāo)敲擊事件,使用Refresh方法可以使容器更新控件的外觀。事件是控件在響應(yīng)外部作用時(shí)由控件觸發(fā)的消息??丶檬录c控件的容器應(yīng)用程序進(jìn)行通信。這種通信只能實(shí)現(xiàn)單一計(jì)算機(jī)的進(jìn)程之間及進(jìn)程內(nèi)部的通信。通過(guò)IDispatch接口,控件可以向容器發(fā)送消息,容器也可以向控件發(fā)送消息。MFC也提供了一些庫(kù)存的事件:Click、DblClick、Error、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove、
7、MouseUp。相應(yīng)的驅(qū)動(dòng)事件的函數(shù)為voidFireClick()等。?組件和控件:組件是具有特定功能的程序模塊,通常是符合一定規(guī)范的類,用不同語(yǔ)言開(kāi)發(fā)的組件可相互通信??丶梢钥闯墒怯行蔚慕M件,除屬性和方法外,通常還有相應(yīng)的事件。二者都是能完成一定功能的實(shí)體,區(qū)別在于控件有一定的形狀,一般還有響應(yīng)事件;組件一般沒(méi)有形狀和事件。?使用ActiveX控件:1、插入ActiveX控件(1)創(chuàng)建使用控件的程序創(chuàng)建一個(gè)名為Time的基于對(duì)話框的工程,確保在第2步中勾選了ActiveXControls復(fù)選框(系統(tǒng)默認(rèn)設(shè)置)。
8、修改對(duì)話框的標(biāo)題為“測(cè)試ActiveX控件”。(2)添加日歷控件1)單擊Project
9、AddtoProject
10、ComponentsandControls菜單項(xiàng),雙擊RegisteredActiveXControls目錄,插入CalendarControl8.0的日歷控件。2)使用默認(rèn)設(shè)置。此時(shí),在對(duì)話框編輯窗口右邊的控件面板上,在最下面多了