版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
利用編寫組件第1頁,課件共43頁,創(chuàng)作于2023年2月2利用ATL編寫COM組件 1 COM組件與ATL 2 利用ATL創(chuàng)建COM組件
3 在VC和VB中使用COM組件
第2頁,課件共43頁,創(chuàng)作于2023年2月31 COM組件與ATL目錄1.1 COM概述 1.2 COM與軟件復(fù)用 1.3 與COM有關(guān)的概念1.4 ATL簡介 第3頁,課件共43頁,創(chuàng)作于2023年2月41.1 COM概述
COM是組件對象模型,在Windows操作系統(tǒng)下COM組件很多,組件是C++面向?qū)ο笏枷朐谲浖I(yè)的應(yīng)用,它是一種創(chuàng)建二進(jìn)制軟件組件的體系,是一種與平臺無關(guān)、語言無關(guān)、分布式的面向?qū)ο蟮捏w系。它不是一種面向?qū)ο蟮恼Z言,而是一種標(biāo)準(zhǔn),COM描述了如何創(chuàng)建對象的一個(gè)模型以及在COM對象間進(jìn)行通訊所需要的內(nèi)容。因此,從功能上講COM更像一個(gè)協(xié)議,一個(gè)二進(jìn)制級別上組件重用的協(xié)議。
第4頁,課件共43頁,創(chuàng)作于2023年2月51.2 COM與軟件復(fù)用
在軟件開發(fā)過程中,人們提出軟件的制造能否像硬件的生產(chǎn)一樣,實(shí)現(xiàn)規(guī)約化的組裝。答案是肯定的,利用Microsoft的COM技術(shù)編寫的組件就可以達(dá)到這個(gè)目的。軟件復(fù)用避免了軟件開發(fā)過程中的重復(fù)勞動(dòng)的解決方案,其出發(fā)點(diǎn)是應(yīng)用系統(tǒng)的開發(fā)不再采用一切“從零開始”的模式,每個(gè)COM組件有自己的屬性和操作,是一個(gè)相對獨(dú)立運(yùn)行的實(shí)體。從軟件復(fù)用種類的定義看,COM技術(shù)實(shí)質(zhì)上是一種模塊復(fù)用的情況。采用組件開發(fā)軟件就像搭積木一樣容易,組件單獨(dú)開發(fā)并作為軟件模塊使用,它具有明確的接口,客戶通過這些接口調(diào)用組件所能提供的服務(wù),將多種組件拼裝起來就能構(gòu)成大型的組件以至建立整個(gè)系統(tǒng)。第5頁,課件共43頁,創(chuàng)作于2023年2月61.3 與COM有關(guān)的概念
1.對象
對象代表現(xiàn)實(shí)中的某個(gè)實(shí)體,是類的實(shí)例。在COM中,對象也是類的實(shí)例,但是COM對象與面向?qū)ο竽P偷念悓ο笥袇^(qū)別。COM是與軟件開發(fā)語言無關(guān)、平臺無關(guān),而面向?qū)ο竽P椭械念悓ο笤诓煌恼Z言下是有區(qū)別的。2.接口
動(dòng)態(tài)鏈接庫DLL是通過導(dǎo)出一系列函數(shù)來讓客戶程序使用的,只有知道了DLL的導(dǎo)出函數(shù)列表才能使用它。COM組件的載體也是一個(gè)DLL,COM組件是通過接口與客戶進(jìn)行通訊的,但它是一個(gè)抽象類(含有純虛函數(shù)的類)。下面是一個(gè)接口的簡單定義:第6頁,課件共43頁,創(chuàng)作于2023年2月7與COM有關(guān)的概念(2)InterfaceIdeposit:Iunknown{virtualHRESULTGetMoney(int*nMoney)=0;};Iunknown接口很重要,其定義如下:StructIunknown{virtualHRESULTQueryInterface(REFIDiid,void**ppvobj)=0;//查詢是否支持接口virtualULONGAddRef()=0;//引用計(jì)數(shù)加1virtualULONGRelease()=0;//引用計(jì)數(shù)減1}第7頁,課件共43頁,創(chuàng)作于2023年2月8與COM有關(guān)的概念(3)3.類與類工廠
類是COM接口的實(shí)現(xiàn),所有的COM對象都是COM類的實(shí)例。一個(gè)COM類也是用一個(gè)GUID來標(biāo)識,在類中稱它為“類標(biāo)識符”(CLSID:ClassIdentifier)。每個(gè)類也有一個(gè)字符串名稱,叫做“編程標(biāo)識符”.4.組件
組件就是實(shí)現(xiàn)了指定接口并被封裝在DLL或可執(zhí)行文件中的軟件模塊,它能夠?qū)崿F(xiàn)由接口指定的功能,主要用來創(chuàng)建COM對象的。一個(gè)組件包括該COM類和實(shí)現(xiàn)該類工廠的程序代碼,有時(shí)也稱它為“服務(wù)器”。一個(gè)組件可以包括多個(gè)COM對象,每個(gè)COM對象可以實(shí)現(xiàn)多個(gè)接口。
第8頁,課件共43頁,創(chuàng)作于2023年2月9與COM有關(guān)的概念(4)
5.注冊與注冊表組件編好之后,編譯出來的DLL文件還必須在注冊表中注冊后才能被其它用戶使用。因?yàn)橹挥羞@樣,用戶在創(chuàng)建COM對象時(shí),系統(tǒng)才能在注冊表中獲取相應(yīng)對象的位置,才能創(chuàng)建對象,對于DLL型的組件,需要調(diào)用RegSvr32.exe來完成,對于EXE型的組件,只要服務(wù)器運(yùn)行過一次,該組件就會(huì)自動(dòng)進(jìn)行注冊。返回
第9頁,課件共43頁,創(chuàng)作于2023年2月101.4 ATL簡介
ATL(ActiveXTemplateLibrary,活動(dòng)模板庫)是一套C++的模板庫,利用它可以很方便地建立小型的、基于COM的組件,對COM組件的開發(fā)提供了最大限度的代碼自動(dòng)生成以及可視化的支持。模板是ATL的核心技術(shù)。1.什么是模板
模板(Template)是基于類型參數(shù)產(chǎn)生類和函數(shù)的一種機(jī)制。模板在不降低類型安全的基礎(chǔ)上,可以顯著地減少代碼量,增加代碼的靈活性。模板包括函數(shù)模板和類模板,本節(jié)只講類模板。2.類模板類是對問題空間的抽象,而類模板則是對類的抽象,即更高層次上的抽象。使用類模板,可以指定操作于某個(gè)數(shù)據(jù)類型的一族類。在程序中,可以首先定義一個(gè)類模板,然后通過使用不同的實(shí)參生成不同模板類的對象。第10頁,課件共43頁,創(chuàng)作于2023年2月11ATL簡介(續(xù))類模板的定義方法為:template<class類型參數(shù)>class類名{
……};類模板的具體內(nèi)容與普通類沒有本質(zhì)的區(qū)別,只是其員中要用到類模板的類型參數(shù)。【例15-1】一個(gè)類模板實(shí)例。程序的主文件名為MyTemplate.cpp。第11頁,課件共43頁,創(chuàng)作于2023年2月122 利用ATL創(chuàng)建COM組件
本節(jié)以一個(gè)字符串處理的組件為例來闡述如何利用ATL來制作COM組件。編程的思路為:(1)在VC下創(chuàng)建一個(gè)ATL工程,并對工程的可選項(xiàng)進(jìn)行設(shè)置;(2)向工程中添加ATL對象,并對該對象進(jìn)行一些初始配置工作;(3)根據(jù)COM組件的功能,向新的ATL對象中加入新的接口定義,包括方法和事件的定義,并實(shí)現(xiàn)相應(yīng)的接口成員函數(shù);(4)編譯鏈接該工程,注冊COM組件;(5)編寫組件測試程序,驗(yàn)證組件的功能。第12頁,課件共43頁,創(chuàng)作于2023年2月13利用ATL創(chuàng)建COM組件目錄2.1 創(chuàng)建ATL應(yīng)用程序框架2.2 在工程中添加ATL對象2.3 在COM組件中添加方法2.4 ATL中的字符串?dāng)?shù)據(jù)類型2.5 編譯IDL并注冊COM組件
第13頁,課件共43頁,創(chuàng)作于2023年2月142.1 創(chuàng)建ATL應(yīng)用程序框架
1.在VC開發(fā)環(huán)境下,選擇File|New菜單,將彈出的New對話框切換到Projects選項(xiàng)卡后,選擇ATLCOMAppWizard項(xiàng),在Projectname編輯框中輸入MyCom工程名稱,并設(shè)置好工程所在的文件夾。如圖右圖所示。
第14頁,課件共43頁,創(chuàng)作于2023年2月15創(chuàng)建ATL應(yīng)用程序框架(續(xù))2.單擊“OK”按鈕,進(jìn)入圖2所示的選擇ATL組件類型對話框。
2選擇COM組件類型對話框第15頁,課件共43頁,創(chuàng)作于2023年2月16創(chuàng)建ATL應(yīng)用程序框架(續(xù)) ATL組件類型一共有三種:第一種是DLL類型;第二種是EXE類型;第三種是Service類型,它也是一個(gè)典型的進(jìn)程外組件。Service是Windows2000的一種應(yīng)用服務(wù),當(dāng)操作系統(tǒng)啟動(dòng)的時(shí)候,該Server自動(dòng)運(yùn)行。由于進(jìn)程外組件的執(zhí)行效率較低,我們選擇DLL類型的。選擇完后,按“Finish”按鈕,結(jié)束ATL創(chuàng)建組件的向?qū)刹襟E,最終在磁盤上生成了組件的框架代碼。表1列出了該工程中的主要文件的信息。第16頁,課件共43頁,創(chuàng)作于2023年2月17表1AppWizard生成的MyCom工程中的文件
return文件名文件說明MyCom.cpp工程的主文件,其中有組件的接口函數(shù)和注冊函數(shù)MyCom.def工程的DLL模塊定義文件,它與前面講的DLL庫中的Def文件的含義相同MyCom.idl工程的接口定義語言文件,COM是靠接口定義語言來定義組件間、組件與客戶間的接口定義,它是COM組件的入口點(diǎn)MyCom.rc工程的資源文件,與別的MFC程序的資源文件類似Resouce.h工程的資源文件的頭文件,與別的MFC程序的resource.h類似Stdafx.h工程的標(biāo)準(zhǔn)頭文件,與別的MFC程序的stdafx.h類似Stdafx.cpp工程的標(biāo)準(zhǔn)實(shí)現(xiàn)文件,與別的MFC程序的stdafx.cpp類似Str.rgs工程的注冊腳本文件第17頁,課件共43頁,創(chuàng)作于2023年2月182.2 在工程中添加ATL對象1.選擇Insert|NewATLObject,彈出如圖3所示的對話框,從Objects列表框中選擇SimpleObject項(xiàng)后,單擊“Next”按鈕繼續(xù)。圖3插入一個(gè)基于ATL的COM類
前面已經(jīng)創(chuàng)建了一個(gè)MyCom工程,接下來,使用VC的ATLObjectWizard工具,可以方便地往工程中添加ATL對象。第18頁,課件共43頁,創(chuàng)作于2023年2月192.2 在工程中添加ATL對象(續(xù))2.系統(tǒng)彈出一個(gè)ATLObjectWizardProperties對話框。在ShortName中輸入Str,在COClass編輯框中輸入StrCom,如圖4所示。注意在Name選項(xiàng)卡中,可以鍵入類與文件名。默認(rèn)情況在,ShortName名字是其它名字的詞根??梢圆唤邮漳J(rèn)的名字而鍵入自己的名稱。圖4窗口中的Class是對象所實(shí)現(xiàn)的類的名稱,CoClass為包含對象支持的一些接口的名稱,Interface為對象創(chuàng)建的接口名字,Type為有關(guān)注冊對象的描述性字符串,ProgID為容器所使用的名字以代替對象的CLSID。
圖4設(shè)置COM類的屬性第19頁,課件共43頁,創(chuàng)作于2023年2月202.2 在工程中添加ATL對象(續(xù))3.切換到圖5所示的Attribute選項(xiàng)卡,設(shè)置StrCom對象的屬性,如組件的線程模式、接口類以及是否支持聚集等屬性。我們使用系統(tǒng)的默認(rèn)屬性。單擊“OK”按鈕,就生成了一個(gè)StrCom組件對象。圖5設(shè)置組件對象的屬性圖第20頁,課件共43頁,創(chuàng)作于2023年2月212.3 在COM組件中添加方法
1.方法的添加進(jìn)入Workspace窗口的ClassView面板,在IStr接口上右擊鼠標(biāo),選擇AddMethod菜單項(xiàng)后,彈出如圖6所示的增加方法接口對話框,在MethodName編輯框中輸入FirstToUpper,在Parameters編輯框中輸入“[in]BSTRInData,[out]BSTR*OutData,[out,retval]long*result”后,按OK按鈕結(jié)束方法的添加。
圖6添加FirstToUpper方法第21頁,課件共43頁,創(chuàng)作于2023年2月222.3 在COM組件中添加方法(續(xù))第一個(gè)參數(shù)為InData,它是具有“in”屬性的字符串變量,它是輸入?yún)?shù),代表欲轉(zhuǎn)換的字符串;第二個(gè)參數(shù)為outData,它是具有“out”屬性的字符串變量,它是輸出參數(shù),代表轉(zhuǎn)換完后的的字符串;第三個(gè)參數(shù)為result,它是具有“out”和“retval”屬性,意思是說該參數(shù)是作為返回值來用的輸出參數(shù),其類型是指向長整型的指針變量。此時(shí)用戶在ClassView中就可以看到Istr接口中的FirstToUpper的方法。如圖7所示。
圖7Istr接口的方法FirstToUpper第22頁,課件共43頁,創(chuàng)作于2023年2月232.3 在COM組件中添加方法(續(xù))2.方法的實(shí)現(xiàn)在Workspace窗口的ClassView面板中,將類CStr展開,接著,再將該類中的Istr接口展開,雙擊方法FirstToUpper(char*source,char*destion),光標(biāo)定位到該類的實(shí)現(xiàn)文件處,在其中添加代碼。STDMETHODIMPCStr::FirstToUpper(BSTRInData,BSTR*OutData,long*result){ CComBSTRstrSource=InData;boolbMayUpper=true;//是否可以大寫的標(biāo)志
for(inti=0;i<strSource.Length();i++) { if(strSource[i]>='a'&&strSource[i]<='z'&&bMayUpper) { strSource[i]=strSource[i]-32; bMayUpper=false; } if(strSource[i]=='')bMayUpper=true; } return*result;}第23頁,課件共43頁,創(chuàng)作于2023年2月242.4 ATL中的字符串?dāng)?shù)據(jù)類型
由于COM組件是跨平臺與開發(fā)語言的,利用ATL開發(fā)出來的組件在VB等別的開發(fā)工具下也可以使用。ATL中使用的是C++語言,別的開發(fā)工具所使用的語言和C++的數(shù)據(jù)類型是有區(qū)別的,那么在不同的語言之間如何進(jìn)行數(shù)據(jù)的交換呢?這要靠組件接口中提供的多語言通用類型的數(shù)據(jù)類型,規(guī)定通用類型也是COM組件的一個(gè)組成部分。第24頁,課件共43頁,創(chuàng)作于2023年2月252.4 ATL中的字符串?dāng)?shù)據(jù)類型(續(xù))1.BSTR
用COM技術(shù)來設(shè)計(jì)組件以及構(gòu)件系統(tǒng)時(shí),字符串常用BSTR來表示。BSTR是BASICString的簡稱,常用于BASIC的編程中。該類型是包含長度前綴的,以0結(jié)束的字符串,長度前綴表示該字符串所包含的字節(jié)數(shù)。COM提供了一些API函數(shù)來管理BSTR。如SysAllocString()(創(chuàng)建并初始化一個(gè)字符串),SysAllocStringLen()(創(chuàng)建一個(gè)指定長度的字符串),SysFreeString()(釋放一個(gè)字符串),SysReAllocString()(改變字符串的長度),SysStringLen()(返回字符串的長度)等。在VC客戶端一般調(diào)用SysAllocString()創(chuàng)建字符串,以[In]參數(shù)方式傳遞給組件中的方法,調(diào)用完成后用SysFreeString()來釋放字符串的緩沖區(qū)。
BSTRstr=SysAllocString(”areyouready?”);
HRESULThr=p->FirstToUpper(str);
SysFreeString(str);第25頁,課件共43頁,創(chuàng)作于2023年2月262.4 ATL中的字符串?dāng)?shù)據(jù)類型(續(xù))2.CComBSTR
CComBSTR是ATL封裝的一個(gè)來使用BSTR數(shù)據(jù)類型的類,如果把BSTR看作各種語言都可以使用的共同數(shù)據(jù)類型的話,那么CComBSTR則就是在C++下操縱COM中的一個(gè)數(shù)據(jù)類型。
CComBSTR類中有一些重要的函數(shù),如Append()(增加一個(gè)字符串),AppendBSTR()(增加一個(gè)BSTR字符串),Copy()(返回成員變量m_str的值),Empty()(釋放成員變量m_str的值),Length()(返回BSTR的長度)等。第26頁,課件共43頁,創(chuàng)作于2023年2月272.5 編譯IDL并注冊COM組件1.IDL簡介
COM接口通常用“接口定義語言”IDL來定義,IDL是一種類似于C++的語言,前一節(jié)設(shè)計(jì)了一個(gè)MyCom組件,下面是其接口MyCom.idl的內(nèi)容:2.編譯IDL
上述Mycom.idl文件我們并未編寫,這完全歸功于ATL工具,是它幫助我們自動(dòng)完成了IDL接口文件。前面在給組件中添加方法的過程中,向?qū)ё詣?dòng)完成了IDL文件。 切換到WorkSpace的FileView面板中,在MyCom.idl文件上右鍵單擊鼠標(biāo),選擇CompileMyCom.idl菜單項(xiàng),于是在磁盤上生成了接口定義文件對應(yīng)的二進(jìn)制文件Mycom.tlb。該文件中含有接口中所定義的方法的記錄,定義了組件的虛函數(shù)指針表。.tlb可以看作是二進(jìn)制的接口定義語言。第27頁,課件共43頁,創(chuàng)作于2023年2月282.5 編譯IDL并注冊COM組件(續(xù))//MyCom.idl:IDLsourceforMyCom.dll//ThisfilewillbeprocessedbytheMIDLtoolto//producethetypelibrary(MyCom.tlb)andmarshallingcode.import"oaidl.idl";import"ocidl.idl"; [object, uuid(F1CDC043-28E4-44D0-A4A6-BB8654CD7C02), dual, helpstring("IStrInterface"), pointer_default(unique) ] interfaceIStr:IDispatch {[id(1),helpstring("methodFirstToUpper")]HRESULTFirstToUpper([in]BSTRInData,[out]BSTR*OutData,[out,retval]long*result);};[uuid(D30786A1-E559-43D4-A62B-9A9FA0C559B1), version(1.0), helpstring("MyCom1.0TypeLibrary")]第28頁,課件共43頁,創(chuàng)作于2023年2月292.5 編譯IDL并注冊COM組件(續(xù))libraryMYCOMLib{ importlib("stdole32.tlb"); importlib("stdole2.tlb"); [ uuid(9618DF64-B84E-43BF-8A9C-3634E6A9F88F), helpstring("StrClass") ] coclassStrCom { [default]interfaceIStr; };};第29頁,課件共43頁,創(chuàng)作于2023年2月302.5編譯IDL并注冊COM組件(續(xù))3.注冊MyCom.dll要想讓用戶能夠“透明”地使用創(chuàng)建的組件,首先必須將該組件注冊。單擊Build|BuildMycom.dll菜單項(xiàng),VC編譯器將生成該組件文件MyCom.dll,并且自動(dòng)完成注冊。其中注冊的代碼在MyCom.cpp中。還有一種手工注冊組件的方法是利用RegSvr32.exe來進(jìn)行,請參閱1.3中的5小節(jié)注冊與注冊表的說明。第30頁,課件共43頁,創(chuàng)作于2023年2月313 在VC和VB中使用COM組件內(nèi)容3.1調(diào)用COM組件的過程3.2在VC中創(chuàng)建COM組件客戶3.3在VB中使用COM組件
第31頁,課件共43頁,創(chuàng)作于2023年2月323.1 調(diào)用COM組件的過程
Windows系統(tǒng)下有大量的組件可供使用,前面我們所創(chuàng)建的MyCom組件也注冊好了,因此也可以使用,使用COM組件過程是一個(gè)典型的客戶/服務(wù)器(Client/Server)方式。COM組件含有被調(diào)用的接口,它是提供服務(wù)的,因此是服務(wù)方。
Windows系統(tǒng)下的組件如同一大堆積木,不同的人建房子所使用的積木也不一樣,因此不同的人使用的COM組件也不一樣,但它們有共同的使用過程:首先客戶程序要獲取包含組件的服務(wù)器(如MyCom.dll就是提供了字符串轉(zhuǎn)化的服務(wù)器),然后讓服務(wù)器創(chuàng)建組組件相關(guān)聯(lián)的類工廠,再由類工廠實(shí)例化組件,最后通過接口來使用組件。第32頁,課件共43頁,創(chuàng)作于2023年2月333.2 在VC中創(chuàng)建COM組件客戶1.打開上一節(jié)的MyCom工程后,選擇File|New菜單,將彈出的New對話框切換到Projects選項(xiàng)卡后,選擇MFCAppWizard(exe)項(xiàng),在Projectname編輯框中輸入ComClient工程名稱,并選擇AddToCurrentWorkspace單選擇按鈕。如圖8所示。圖8在MyCom工作區(qū)中添加MyComClient工程第33頁,課件共43頁,創(chuàng)作于2023年2月343.2 在VC中創(chuàng)建COM組件客戶(2)2.單擊“OK”按鈕進(jìn)入向?qū)乱徊襟E,選擇單文檔應(yīng)用程序類型。完后按“Finish”按鈕生成ComClient工程(這是在一個(gè)工作區(qū)中包含兩個(gè)工程的情況)。
3.在對話框資源IDD_COMCLIENT_DIALOG中添加圖9所示的控件,這些控件的屬性如表2所示。圖9對話框界面設(shè)計(jì)第34頁,課件共43頁,創(chuàng)作于2023年2月353.2在VC中創(chuàng)建COM組件客戶(3)控件類型屬性值對應(yīng)成員變量靜態(tài)文本控件IDIDC_STATIC
Caption源串
IDIDC_STATIC
Caption目標(biāo)串
編輯框控件IDIDC_EDIT1m_strSource
IDIDC_EDIT2m_strDestion按鈕控件IDIDOK
Caption退出
IDIDC_BUTTON1
Caption轉(zhuǎn)換
表2控件的屬性設(shè)置與對應(yīng)的成員變量設(shè)置
return第35頁,課件共43頁,創(chuàng)作于2023年2月363.2在VC中創(chuàng)建COM組件客戶(4)
4.在工程中添加Istr類按CTR+W打開類向?qū)υ捒蚝螅诋?dāng)前的工程中加入COM中的一個(gè)類。方法為在類向?qū)У腗essageMap選項(xiàng)卡下,單擊“AddClass”按鈕,彈出選項(xiàng)“FromaTypeLibrary”如圖10。單擊“FromaTypeLibrary”選項(xiàng),出現(xiàn)圖11的對話框,把Mycom.tlb選上,又出現(xiàn)圖12的對話框,把Istr類選上,按“OK”按鈕,這樣就把創(chuàng)建的MyCom.tlb中的類Istr加入到該工程中。
圖10從類型庫中增加類第36頁,課件共43頁,創(chuàng)作于2023年2月373.2在VC中創(chuàng)建COM組件客戶(5)
返回
圖11選擇Mycom.tlb圖12選擇類型庫中的IStr類
第37頁,課件共43頁,創(chuàng)作于2023年2月383.2 在VC中創(chuàng)建COM組件客戶(6)5.主要代碼(1)在應(yīng)用程序類的InitInstance()函數(shù)中增加初始化OLE的代碼
BOOLCComClientApp::InitInstance(){AfxEnableControlContainer();AfxOleInit();//初始化OLE……}(2)“轉(zhuǎn)換”按鈕的實(shí)現(xiàn)代碼voidCComClientDlg::OnButton1(){IStrm_string;if(!m_string.CreateDispatch("MyCom.str.1"))//初始化COM庫MessageBox("CreateUserInfoerror");UpdateData(true);//將前臺數(shù)據(jù)傳到后臺BSTRbstrDestion=SysAllocString(L"");m_string.FirstToUpper(m_strSource,&bstrDestion);//調(diào)用COM組件中的方法m_strDestion=bstrDestion;UpdateData(false); //將后臺數(shù)據(jù)傳到前臺}第38頁,課件共43頁,創(chuàng)作于2023年2月393.3 在VB中使用COM組件
前面用ATL創(chuàng)建
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高新技術(shù)研發(fā)廠房租賃合同3篇
- 2024版汽車租賃合同樣本6篇
- 二零二五年度駕校學(xué)員駕駛技能競賽組織與管理合同3篇
- 二零二四企業(yè)銷售合同合規(guī)性審核與風(fēng)險(xiǎn)防范協(xié)議3篇
- 2025年度西餐廳桌椅設(shè)計(jì)采購及裝修合同模板3篇
- 2025年度科技企業(yè)戰(zhàn)略合作伙伴股權(quán)調(diào)整協(xié)議書3篇
- 二零二五年度航空航天器打膠工藝優(yōu)化合同2篇
- 2025版汽車金融臨時(shí)借款合同范例4篇
- 二零二五年度環(huán)保產(chǎn)品認(rèn)證服務(wù)合同環(huán)保條款3篇
- 二零二四年農(nóng)產(chǎn)品電商平臺會(huì)員服務(wù)及積分獎(jiǎng)勵(lì)合同3篇
- 二零二五年度無人駕駛車輛測試合同免責(zé)協(xié)議書
- 北京市海淀區(qū)2024-2025學(xué)年高一上學(xué)期期末考試歷史試題(含答案)
- 常用口服藥品的正確使用方法
- 2025年湖北華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員52名歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年鉆探工程勞務(wù)協(xié)作協(xié)議樣式版B版
- 《心肺復(fù)蘇機(jī)救治院內(nèi)心搏驟?;颊咦o(hù)理專家共識》解讀
- 計(jì)算機(jī)二級WPS考試試題
- 智聯(lián)招聘行測題庫及答案
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- GB∕T 2099.1-2021 家用和類似用途插頭插座 第1部分:通用要求
- 超潔凈管道(CL-PVC)施工技術(shù)
評論
0/150
提交評論