freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arcengine開(kāi)發(fā)個(gè)人手冊(cè)(編輯修改稿)

2024-07-26 06:03 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 樣用戶就可以與ToolbarControl進(jìn)行交互。StartDialog方法啟動(dòng)自定義對(duì)話框后會(huì)立即返回,而對(duì)話框仍顯示在屏幕上。為了在自定義對(duì)話框打開(kāi)時(shí)保持對(duì)它的引用,必須養(yǎng)成這樣的好習(xí)慣,保存自定義對(duì)話框的一個(gè)類級(jí)別變量并監(jiān)聽(tīng)它的ICustomizeDialogEvents。參考第六章“Developer Scenarios”的“Building Applications”節(jié),查看當(dāng)ToolbarControl處于自定義模式時(shí)如何顯示自定義對(duì)話框。操作棧(Operation Stack) ToolbarControl用一個(gè)OperationStack來(lái)來(lái)管理撤消和重復(fù)功能。用戶操作被每個(gè)ToolbarItem的底層命令加入到操作棧,這樣用戶可以任意地對(duì)操作進(jìn)行撤消和重復(fù)。例如,當(dāng)一個(gè)圖形要素被移動(dòng)之后,可以通過(guò)將圖形移動(dòng)到原始位置以撤消這個(gè)操作。命令是否使用OperationStack取決于其實(shí)現(xiàn)。通常,程序員為程序創(chuàng)建一個(gè)單獨(dú)的ControlsOperationStack(默認(rèn)情況下OperationStack屬性是空值(Nothing))并將其設(shè)置為每個(gè)ToolbarControl的屬性。取消和重復(fù)命令可以通過(guò)OperationStack加入到ToolbarControl中。第七節(jié) 不用ToolbarControl來(lái)創(chuàng)建程序 雖然用ToolbarControl可以迅速創(chuàng)建類似ArcGIS Desktop的部分程序框架,但有時(shí)程序也不需要ToolbarControl。 (1)、ToolbarControl的可視化界面可能與程序不匹配; (2)、不需要ToolbarControl的命令對(duì)象的實(shí)現(xiàn); (3)、當(dāng)前程序中存在一個(gè)應(yīng)用程序框架; (4)、ToolbarControl和它擁有的命令通過(guò)多個(gè)“buddy controls”工作時(shí)很困難; 當(dāng)上述情況中,程序員必須直接使用MapControl、PageLayoutControl、SceneControl、GlobeControl或 ReaderControl。其他任何需要的用戶界面組件由開(kāi)發(fā)環(huán)境提供,如命令按鈕、狀態(tài)欄和列表框等。 例如,在一個(gè)MapControl程序中加入地圖導(dǎo)航功能,可以按以下步驟來(lái)完成: (1)、設(shè)置MapControl的OnMouseDown事件中的IMapControl2::Extent屬性為IMapControl2::TrackRectangle方法的返回值Envelope來(lái)創(chuàng)建“Zoom In”功能; (2)、設(shè)置IMapControl2::Extent屬性為IMapControl2::FullExtnent屬性的Envelope,來(lái)創(chuàng)建“Full Extent”功能。這些代碼可以加入到開(kāi)發(fā)環(huán)境提供的命令按鈕的Click事件。 再者,ArcGIS Engine提供的控件命令,或用HookHelper、SceneHookHelper或GlobeHookHelper對(duì)象創(chuàng)建的自定義命令,都可以與單獨(dú)的ArcGIS控件直接工作。然而,這樣程序員就必須負(fù)責(zé)在適當(dāng)?shù)臅r(shí)候調(diào)用ICommand::OnCreate 和ICommand::OnClick方法,并按如下步驟讀取ICommand接口的屬性來(lái)建立用戶界面: (1)、用程序創(chuàng)建一個(gè)新的命令實(shí)例,并將這個(gè)單獨(dú)的ArcGIS控件傳遞給OnCreate事件。例如,3D的“ZoomFuulExtent”命令要和GlobeControl一起工作的話,就心謗腹非將GlobeControl作為勾子傳遞給OnCreate方法; (2)、程序員可以不用ToolbarControl,而用CommandPool對(duì)象來(lái)管理程序使用的命令。CommandPool將為調(diào)用每個(gè)基于本身的Hook屬性的命令提供支持; (3)、如果命令只實(shí)現(xiàn)了ICommand接口,程序可以在適當(dāng)?shù)臅r(shí)候調(diào)用OnClick方法來(lái)執(zhí)行特殊的動(dòng)作。如果命令是一個(gè)同時(shí)實(shí)現(xiàn)了ICommand和ITool接口的工具,那么程序員就必須在ArcGIS控件中將其設(shè)置為CurrentTool。ArcGIS控件將發(fā)送鍵盤(pán)和鼠標(biāo)事件到該工具。 (4)、命令的Enabled、Caption和 Bitmap屬性是可讀寫(xiě)的,通過(guò)將其設(shè)置為開(kāi)發(fā)環(huán)境提供的命令按鈕的屬性,可以建立用程序的戶界面。 雖然用這種方法來(lái)建立程序需要程序員寫(xiě)更多的代碼,但這可以換取更多的靈活性。 第四章 開(kāi)發(fā)者環(huán)境 ArcObjects是基于微軟的組件對(duì)象模型(COM)的,ArcGIS用戶不必理解COM,但如果你是一個(gè)開(kāi)發(fā)人員,想用ArcObjects開(kāi)發(fā)應(yīng)用程序或擴(kuò)展ArcGIS程序,那你必須理解COM,即使你打算用C++、 APIs而不用COM。對(duì)理解的水平的需求取決于你想定制或開(kāi)發(fā)的深度。至少,要先復(fù)習(xí)一下微軟組件對(duì)象模型和用ArcObjects開(kāi)發(fā)部分,然后再根據(jù)情況選擇后面的APIspecific章節(jié)。每節(jié)APIspecific都將向你介紹所支持語(yǔ)言的開(kāi)發(fā)技巧和用ArcObjects深入開(kāi)發(fā)詳細(xì)特點(diǎn)。本章所涉及的主題包括: (1)、微軟組件對(duì)象模型(COM) (2)、用ArcObjects開(kāi)發(fā) (3)、開(kāi)發(fā)平臺(tái)和環(huán)境――Visual Basic (4)、Visual C++ (5)、.NET API (6)、Java API (7)、C++ API第一節(jié) 微軟組件對(duì)象模型COM(1)、COM不是一種面向?qū)ο笳Z(yǔ)言,而是一種協(xié)議或標(biāo)準(zhǔn)。它不僅僅是一種技術(shù),還是一種軟件開(kāi)發(fā)的方法論。COM定義組件或模塊之間的一種通信協(xié)議,還定義了一種程序模型,即基于接口的程序。(2)、COM允許對(duì)象二進(jìn)制級(jí)別的重用,這意味著第三方開(kāi)發(fā)都不需要訪問(wèn)源代碼、頭文件或?qū)ο髱?kù)就可以擴(kuò)展系統(tǒng),甚至在最底層。一、組件(Components)、對(duì)象(Objects)、客戶端(Clients)和服務(wù)端(Servers) COM是C/S結(jié)構(gòu),服務(wù)端(或?qū)ο螅┨峁┮恍┕δ?,客戶端則使用這些功能。COM簡(jiǎn)化了客戶和對(duì)象的通信。一個(gè)對(duì)象可以同時(shí)是服務(wù)端和客戶端。 客戶端和服務(wù)端可以在同一進(jìn)程空間,也可以在不同的進(jìn)程空間。在同一進(jìn)程空間(Inprocess)時(shí),服務(wù)端以動(dòng)態(tài)鏈接庫(kù)(DLL)形式封裝,當(dāng)客戶端第一次訪問(wèn)服務(wù)時(shí),這些動(dòng)態(tài)鏈接庫(kù)被載入客戶端地址空間。在不同進(jìn)程空間(Outofprocess)時(shí),服務(wù)端以可執(zhí)行文件(EXE)形式封裝,并在自己的地址空間運(yùn)行。COM對(duì)客戶端存在不同的透明度。 兩種方法各有好處。動(dòng)態(tài)鏈接庫(kù)調(diào)入內(nèi)存比較快,調(diào)用其函數(shù)也非?????蓤?zhí)行文件則提供更好的解決方案(當(dāng)服務(wù)失敗時(shí),客戶不會(huì)崩潰),并且安全性能好,因?yàn)榉?wù)擁有自己的安全措施。 在分布式系統(tǒng)中,可執(zhí)行文件更靈活,即使服務(wù)對(duì)客戶有不同的字節(jié)要求也沒(méi)關(guān)系。大部分的AO服務(wù)是以動(dòng)態(tài)鏈接庫(kù)形式封裝的,后面將顯示其好處。 在ArcGIS程序中,有許多對(duì)象通過(guò)接口提供許多屬性和方法。當(dāng)你使用ESRI對(duì)象庫(kù)時(shí),可以認(rèn)為所有這些屬性和接口都已完全實(shí)現(xiàn),只要他們?cè)趯?duì)象圖(object diagram)上出現(xiàn)就只可以使用。二、類工廠(Class factory) 在每個(gè)服務(wù)端中都有一上對(duì)象――類工廠,COM運(yùn)行時(shí)與其交互來(lái)實(shí)例化一個(gè)特殊的類。每個(gè)COM類都對(duì)應(yīng)一個(gè)類工廠。通常,當(dāng)客戶從服務(wù)端請(qǐng)求一個(gè)對(duì)象時(shí),相應(yīng)的類工廠會(huì)創(chuàng)建一個(gè)新的對(duì)象,并將其傳遞給客戶。三、單一對(duì)象(Singleton Objects) 盡管這是通過(guò)的實(shí)現(xiàn)方式,但不是唯一的。類工廠也只可以只在第一次創(chuàng)建一個(gè)對(duì)象實(shí)例,在以后調(diào)用時(shí),傳遞相同的對(duì)象給客戶。因?yàn)樵谡麄€(gè)過(guò)程中只有一個(gè)對(duì)象實(shí)例,所以這種實(shí)現(xiàn)方式叫單一對(duì)象。四、全局唯一標(biāo)識(shí)(Globally Unique identifiers)在一個(gè)分布式系統(tǒng)中,通常會(huì)有成千上萬(wàn)個(gè)接口、類和服務(wù),在運(yùn)行時(shí)期當(dāng)定位和綁定客戶與對(duì)象時(shí)必須引用它們。很明顯,使用人名這種方式會(huì)造成潛在的沖突,所以COM使用全局唯一標(biāo)識(shí)(GUIDs),它是一個(gè)128位的數(shù)字,并且在全世界能保證其唯一性。到公元5770年,每秒可以生成1千萬(wàn)個(gè)GUIDs,而且每個(gè)都唯一。 COM API定義了一個(gè)函數(shù)可以生成GUIDs,另外,所有支持COM的開(kāi)發(fā)工具都會(huì)自動(dòng)賦GUIDs值。GUIDs和開(kāi)放組織的分布式計(jì)算環(huán)境定義的普通唯一標(biāo)識(shí)(UUIDs)一樣。下面是注冊(cè)形式的一個(gè)GUIDs例子:{E6BDAA764D3511D098BE00805F7CED21}。(Microsoft’s Visual Studio提供有一個(gè)圖形化工具GUIDGEN。EXE用來(lái)生成GUID,)五、COM類和接口(COM Class and Interfaces) COM接口都是抽象的,即接口沒(méi)有實(shí)現(xiàn),其實(shí)現(xiàn)來(lái)自類的實(shí)現(xiàn)。接口只是陳述了對(duì)象可以接受哪些請(qǐng)求。 不同對(duì)象的接口實(shí)現(xiàn)不同。因此,對(duì)象繼承接口類型,而不是其實(shí)現(xiàn),這中心任務(wù)類型繼承。功能被接口抽象模塊化了,實(shí)現(xiàn)則在類實(shí)現(xiàn)中完成。通常類和接口分別表示COM中的什么和如何,接口定義了一個(gè)對(duì)象能做什么,類定義了如何去做。 COM類提供了一個(gè)或多個(gè)接口的代碼,進(jìn)而封裝了類的整個(gè)功能。兩個(gè)類可以有同樣的接口,但其實(shí)現(xiàn)可能不同。通過(guò)這種方式實(shí)現(xiàn)接口,COM顯示了經(jīng)典的面向?qū)ο蟮亩鄳B(tài)機(jī)制。COM不支持多實(shí)例的概念,然而這并不是意味著是一個(gè)缺陷,因?yàn)閱我活惪梢詫?shí)現(xiàn)多個(gè)接口。請(qǐng)看如圖多態(tài)機(jī)制:(圖:這是Geodatabase對(duì)象模型的簡(jiǎn)單一個(gè)部分,顯示了抽象類、可實(shí)例化類(colcass)和類實(shí)例之間的類型繼承。) 在AO中有三種類類型必須注意:抽象類(abstract class)、可實(shí)例化類(coclass)和類(class)。抽象類不能創(chuàng)建,它是對(duì)子類實(shí)例的一個(gè)單獨(dú)說(shuō)明(通過(guò)類型繼承)。AO中數(shù)據(jù)集(Datset)或幾何類(Geometry)就是抽象類,幾何類對(duì)象不能創(chuàng)建,單折線類(Polyline)對(duì)象可能創(chuàng)建。折線類對(duì)象反過(guò)來(lái)實(shí)現(xiàn)幾何基類中定義的接口,因此基類對(duì)象類中定義的任何接口都可以通過(guò)可實(shí)例化類來(lái)訪問(wèn)。 可實(shí)例化類(coclass)是一個(gè)可以公開(kāi)創(chuàng)建的類,換句話說(shuō),他使得COM可以創(chuàng)建這個(gè)類的實(shí)例并將結(jié)果對(duì)象傳遞給客戶讓其使用類中定義的接口提供的服務(wù)。一個(gè)類不能公開(kāi)創(chuàng)建,但其對(duì)象可以被AO中的對(duì)象創(chuàng)建,并傳遞給客戶使用。 下圖顯示了COM類中實(shí)現(xiàn)接口時(shí)的多態(tài)行為。注意Human和Parrot類都實(shí)現(xiàn)了ITalk接口,Italk接口定義了方法和屬性,如:StartTalking、StopTalking或 Language,但很明顯兩個(gè)類對(duì)此接口的實(shí)現(xiàn)不同。(該圖顯示了如何在多個(gè)對(duì)象之間共享以接口形式表達(dá)的普通行為來(lái)支持多態(tài),這里以人和動(dòng)物為例)六、內(nèi)部接口(Inside Interfaces) COM接口就是COM對(duì)象之間如何通信。當(dāng)使用COM對(duì)象時(shí),程序員并不直接操縱COM對(duì)象,而是通過(guò)其接口獲得訪問(wèn)權(quán)限。COM接口被設(shè)計(jì)成一組邏輯上相關(guān)的函數(shù),客戶調(diào)用虛函數(shù),服務(wù)端來(lái)實(shí)現(xiàn),通過(guò)這種方法,對(duì)象的接口就成為客戶和對(duì)象的聯(lián)絡(luò)員。一個(gè)對(duì)象的客戶擁有指向這個(gè)對(duì)象的接口指針,對(duì)這個(gè)接口指針的引用是透明的,因?yàn)榭蛻艨蛻舨荒塬@得任何對(duì)象內(nèi)部實(shí)現(xiàn)的消息,也不能直接訪問(wèn)對(duì)象的狀態(tài)數(shù)據(jù)(state data)??蛻舯仨毮苓^(guò)接口的成員函數(shù)來(lái)通信。這樣就允許COM提供一個(gè)二進(jìn)制標(biāo)準(zhǔn),對(duì)象可以通過(guò)這個(gè)標(biāo)準(zhǔn)來(lái)進(jìn)行有效通信。 接口允許程序員抽象地模塊化功能。Visual C++程序員將接口看作一個(gè)純虛函數(shù)的集合,而Visual Basic程序員則將其看作一個(gè)屬性、函數(shù)和子程序的集合。 在COM中接口的基礎(chǔ)概念,COM說(shuō)明(Microsoft,1995)強(qiáng)調(diào)了在討論COM接口時(shí)必須注意以下4點(diǎn): (1)、接口不是類,一個(gè)接口不能被自身實(shí)例化,因?yàn)樗鼪](méi)有實(shí)現(xiàn); (2)、接口不是對(duì)象,一個(gè)接口是一組函數(shù)的集合,并且符合二進(jìn)制標(biāo)準(zhǔn),客戶和對(duì)象以此通信; (3)、接口是強(qiáng)制類型的(strongly typed),每個(gè)接口,都有自己的接口標(biāo)識(shí),從而減少了接口之間類似人名的沖突的可能性; (4)、接口是不變的,接口一旦被定義和發(fā)布,就不能再更改。 接口一旦公布,就不能再改變其外部簽名。但可以在任何時(shí)候修改對(duì)象提供接口的實(shí)現(xiàn)細(xì)節(jié),修改可以是對(duì)錯(cuò)誤小的修正,也可以是內(nèi)部算法的重改,不管怎樣,使用接口的客戶不受影響,因?yàn)榻涌谛薷那昂髮?duì)他們來(lái)說(shuō)是一樣。這意味著對(duì)以新的DLL或EXE形式發(fā)布的服務(wù)端進(jìn)行升級(jí)時(shí),客戶端不需重新編譯就可以使用新的功能。如果接口外部簽名無(wú)效了,那會(huì)產(chǎn)生新的接口提供新的服務(wù)。舊的或已放棄的接口并不從類中移除,以確保舊客戶程序都可以繼續(xù)享用新的服務(wù),新客戶則可以在新舊接口之間進(jìn)行選擇。七、未知接口(The IUnknown Interface) 所有的COM接口都繼承自IUnknows接口,所有的COM對(duì)象都必須實(shí)現(xiàn)這個(gè)接口。Iunknows接口有兩個(gè)任務(wù):控制對(duì)象的生命同期并提供運(yùn)行時(shí)類型支持??蛻敉ㄟ^(guò)Iunknows接口來(lái)保持對(duì)一個(gè)使用中的對(duì)象的引用,而把生命周期則交給對(duì)象自己管理。 對(duì)象生命周期使用AddRef、Release方法和一個(gè)引用計(jì)數(shù)器來(lái)控制。每個(gè)對(duì)象都必須實(shí)現(xiàn)Iunknows接口才能控制自己的生命周期。在任何時(shí)候創(chuàng)建或復(fù)制對(duì)象指針都會(huì)調(diào)用AddRef方法,此時(shí)計(jì)數(shù)器加1,當(dāng)客戶不再需要這個(gè)指針時(shí),就會(huì)調(diào)用相應(yīng)的Release方法,計(jì)數(shù)器減1,當(dāng)引用數(shù)減到0時(shí),對(duì)象就自動(dòng)銷毀。八、接口定義語(yǔ)言(Interface Definition Language) 微軟接口定義語(yǔ)言(Microsoft Interface Definition Language)用來(lái)描述COM對(duì)象及其接口,它是對(duì)分布式計(jì)算環(huán)境組織(Distributed Computing Environment)定義的接口定義語(yǔ)言(Interface Definition Language)(用來(lái)描述客戶的服務(wù)端之間的遠(yuǎn)程調(diào)用)的擴(kuò)展。九、類型庫(kù) 類型庫(kù)是一個(gè)IDL文件的二進(jìn)制版本,包含了服務(wù)端中所有可實(shí)例化類、接口、方法和類型的二進(jìn)制描述。十、入接
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1