專利名稱:一種構(gòu)件的即插即用方法、應(yīng)用及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件系統(tǒng)的開發(fā)技術(shù)領(lǐng)域,特別涉及 一種構(gòu)件的即插
即用方法及利用該方法自動消解Windows資源沖突的方法。
背景技術(shù):
在"平臺+構(gòu)件"的系統(tǒng)架構(gòu)中, 一個應(yīng)用系統(tǒng)是由 一個平臺和若 干個構(gòu)件組成,平臺負(fù)責(zé)加載構(gòu)件并完成相應(yīng)的調(diào)度和管理任務(wù)(包 括構(gòu)件之間的協(xié)調(diào)和構(gòu)件與平臺之間的協(xié)調(diào)),而構(gòu)件完成某方面的 特定功能。
在這種系統(tǒng)架構(gòu)中,構(gòu)件提供已編譯好的程序接口或?qū)傩?。其?點是較難對其進(jìn)行修改,通常只能了解構(gòu)件的接口和屬性等信息,它 是在運行級上實現(xiàn),不需要重新編譯即可立即運行,容易實現(xiàn)即插即 用的重用和分布環(huán)境中的重用。它只需按一定標(biāo)準(zhǔn)設(shè)計接口,程序之 間藕合較松散,各部件需要修改時,只需單獨編譯并替換原來的文件 即可。但是傳統(tǒng)的構(gòu)件功能調(diào)用時,平臺需要構(gòu)件的相關(guān)信息,如構(gòu)
件名、構(gòu)件導(dǎo)出函數(shù)等;而且當(dāng)構(gòu)件功能變化時,如構(gòu)件導(dǎo)出函數(shù)增 加或減少,平臺需在源文件中增加或減少相應(yīng)的導(dǎo)出函數(shù)的導(dǎo)入,且 要重新編譯鏈接,即無法在運行時動態(tài)感知,因此這種方法無法實現(xiàn) 構(gòu)件功能的動態(tài)調(diào)用。
在這種系統(tǒng)架構(gòu)中,構(gòu)件中需要Windows資源不可避免,如需 要構(gòu)件來完成一定的人機交互功能,而Windows程序的人機交互功 能是基于資源的,如菜單、對話框等。如果平臺和構(gòu)件都利用Visual Studio開發(fā)工具完成,那么Visual Studio為平臺和每個構(gòu)件生成的同 類資源序列相同,這就存在資源ID重復(fù)的現(xiàn)象,如平臺中自定義菜 單的ID值會從32771開始,那么第一個自定義菜單的ID值一定是32771,同樣構(gòu)件(而且是所有構(gòu)件)中的第一個自定義菜單(如果 構(gòu)件需要自定義菜單)的ID值也一定是32771,其他類型的資源同 理。這種構(gòu)件與平臺之間以及構(gòu)件之間資源ID值重復(fù)的現(xiàn)象會導(dǎo)致 資源沖突問題。所謂的Windows資源沖突,是由于構(gòu)件與調(diào)用該構(gòu) 件的平臺之間以及構(gòu)件之間由于使用具有相同資源ID值的資源,且 搜索資源空間的順序相對固定所產(chǎn)生的資源定位、消息路由等錯誤, 以及由此帶來的資源查找失敗、資源無法加載或無法創(chuàng)建以及 Windows消息由于無法準(zhǔn)確路由而被錯誤的執(zhí)行或無法執(zhí)行的現(xiàn)象。 資源沖突是任何使用丫0++開發(fā)的"平臺+構(gòu)件"架構(gòu)模式的應(yīng)用 系統(tǒng)所必須解決的問題,尤其是構(gòu)件具有大量的交互界面時更是如 此??梢酝ㄟ^某種強制機制(如人工手動編輯)使所有構(gòu)件和平臺的 資源ID不重復(fù),但很多情況下很難實現(xiàn),如人工編輯ID值的方法很 繁瑣且很容易失誤難以保證正確性,且該方法對于即插即用構(gòu)件不適 用。即插即用構(gòu)件后于平臺產(chǎn)生,這意味著平臺的資源ID不可能再 編輯,而只能編輯構(gòu)件的ID,而且還得為每個構(gòu)件規(guī)定每類資源的 ID值范圍。為每個構(gòu)件規(guī)定其資源ID值的范圍幾乎是不可能的,因 為在項目的實際開發(fā)中,構(gòu)件開發(fā)者往往分散在不同領(lǐng)域、不同的地 域、不同的開發(fā)團(tuán)隊中,這種通過人工協(xié)調(diào)的方式來規(guī)避資源ID沖 突的方法其工作量和難度難以想象,也極不符合軟件工程開發(fā)思想, 因此是一種不可取的方法。
發(fā)明內(nèi)容
(一) 發(fā)明目的
本發(fā)明的目的是提供一種構(gòu)件的即插即用方法,能夠?qū)崿F(xiàn)構(gòu)件功 能的動態(tài)加載且能夠自動消解Windows資源沖突。
(二) 技術(shù)方案
一種構(gòu)件的即插即用方法,該方法以基于模板方法的IBP互聯(lián)底 板為基礎(chǔ)而實現(xiàn),IBP互聯(lián)底板包括平臺框架,即插父類及其構(gòu)件子類、即用父類及其構(gòu)件資源命令路由子類,所述即插父類和即用父 類位于平臺中,所述構(gòu)件子類和構(gòu)件資源命令路由子類位于構(gòu)件中, 平臺框架繼承即用父類,且調(diào)用即插父類和即用父類,該方法包括以 下步驟文件配置,準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)
件導(dǎo)出函數(shù);構(gòu)件加載,平臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動 態(tài)地將構(gòu)件加載到平臺的地址空間中;構(gòu)件功能映射,將構(gòu)件用于交
互的構(gòu)件資源動態(tài)加載到平臺的地址空間中,完成構(gòu)件功能在平臺上
的動態(tài)映射;構(gòu)件功能調(diào)用,對構(gòu)件功能進(jìn)行動態(tài)感知和動態(tài)調(diào)用, 以實現(xiàn)構(gòu)件功能;構(gòu)件卸載,平臺調(diào)用構(gòu)件卸載函數(shù)將構(gòu)件動態(tài)卸載。 其中,所述構(gòu)件功能映射包括以下步驟平臺框架調(diào)用構(gòu)件的導(dǎo)
出函數(shù)實例化構(gòu)件子類對象;利用XTP來建立構(gòu)件資源ID和構(gòu)件名的
映射關(guān)系;平臺框架調(diào)用即插父類中的模板函數(shù)來實現(xiàn)構(gòu)件資源的加 載,并獲取構(gòu)件資源命令路由子類對象;建立構(gòu)件名和構(gòu)件資源路由 子類對象的映射關(guān)系,從而形成"構(gòu)件資源ID—構(gòu)件名—構(gòu)件資源命 令路由子類對象"的映射關(guān)系。
其中,所述構(gòu)件包括規(guī)則DLL (Dynamic Link Library )、擴展 DLL和COM ( Conponent Object Model)組件。
一種所述的構(gòu)件的即插即用方法來自動消解Windows資源沖突 的方法,所述自動消解Windows資源沖突的方法還包括如下步驟確 定資源所屬的控件對象,從而得到資源所屬的構(gòu)件的構(gòu)件名;根據(jù)構(gòu) 件名找到構(gòu)件資源命令路由子類對象,從而得到構(gòu)件資源命令路由的
入口點;通過構(gòu)件資源命令路由子類對象將構(gòu)件資源命令準(zhǔn)確的路由
到相應(yīng)的處理函數(shù)進(jìn)行處理。
其中,所述的構(gòu)件資源包括菜單(CMe皿)、工具條(CToolBar)
和快捷鍵。
一種利用所述的構(gòu)件的即插即用方法來自動消解Windows資源 沖突的方法,所述自動消解Windows資源沖突的方法還包括如下步
7驟獲取當(dāng)前構(gòu)件的實例句柄;保存平臺框架當(dāng)前搜索的資源空間實
例句柄;將構(gòu)件的資源空間置為框架當(dāng)前搜索的資源空間;創(chuàng)建構(gòu)件 資源;將資源空間通過保存的實例句柄恢復(fù)至先前的資源空間。
其中,所述的構(gòu)件資源包括對話框(CDialog)、視口 (CView) 和窗體(CWnd)。
一種基于所述的構(gòu)件的即插即用方法的系統(tǒng),包括文件配置模 塊,用于準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)件導(dǎo)出函 數(shù);構(gòu)件加載模塊,用于平臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動 態(tài)地將構(gòu)件加載到平臺的地址空間中;構(gòu)件功能映射模塊,用于將構(gòu)
件用于交互的構(gòu)件資源動態(tài)加載到平臺的地址空間中,完成構(gòu)件功能
在平臺上的動態(tài)映射;構(gòu)件功能調(diào)用模塊,用于對構(gòu)件功能進(jìn)行動態(tài) 感知和動態(tài)調(diào)用,以實現(xiàn)構(gòu)件功能;構(gòu)件卸載模塊,用于平臺調(diào)用構(gòu) 件卸載函數(shù)將構(gòu)件動態(tài)卸載。
其中,構(gòu)件功能映射模塊包括用于平臺框架調(diào)用構(gòu)件的導(dǎo)出函 數(shù)實例化構(gòu)件子類對象的模塊;用于利用XTP來建立構(gòu)件資源ID和構(gòu) 件名的映射關(guān)系的模塊;用于平臺框架調(diào)用即插父類中的模板函數(shù)來 實現(xiàn)構(gòu)件資源的加載,并獲取構(gòu)件資源命令路由子類對象的模塊;用 于建立構(gòu)件名和構(gòu)件資源路由子類對象的映射關(guān)系,從而形成"構(gòu)件 資源ID—構(gòu)件名—構(gòu)件資源命令路由子類對象"的映射關(guān)系的模塊。
一種包含構(gòu)件的即插即用系統(tǒng)的自動消解Windows資源的系統(tǒng), 包括用于確定資源所屬的控件對象,從而得到資源所屬的構(gòu)件的構(gòu) 件名的模塊;用于根據(jù)構(gòu)件名找到構(gòu)件資源命令路由子類對象,從而 得到構(gòu)件資源命令路由的入口點的模塊;用于通過構(gòu)件資源命令路由 子類對象將構(gòu)件資源命令準(zhǔn)確的路由到相應(yīng)的處理函數(shù)進(jìn)行處理的 模塊。
一種包含構(gòu)件的即插即用系統(tǒng)的自動消解Windows資源的系統(tǒng), 還包括用于獲取當(dāng)前構(gòu)件的實例句柄的模塊;用于保存平臺框架當(dāng)件的資源空間置為框架
當(dāng)前搜索的資源空間的模塊;用于創(chuàng)建構(gòu)件資源的模塊;用于將資源 空間通過保存的實例句柄恢復(fù)至先前的資源空間模塊。 (三)有益效果
本發(fā)明的有益效果在于,平臺在編譯時不需要構(gòu)件的任何信息, 包括構(gòu)件名稱、功能函數(shù)名稱及其參數(shù)類型,所有這些構(gòu)件信息都是 在運行時動態(tài)獲取,即可實現(xiàn)在平臺運行時構(gòu)件的動態(tài)加載、卸載和 功能調(diào)用;還允許平臺無需修改、重新編譯和鏈接即可動態(tài)感知構(gòu)件 功能的變化,無論是構(gòu)件功能的增加或減少;在平臺和構(gòu)件的多個資 源ID值相同的情況下,解決了資源命令路由問題和創(chuàng)建時的ID沖突問 題,從根本上消解了即插即用構(gòu)件與平臺以及構(gòu)件與構(gòu)件之間的
Windows資源沖突,從而為"平臺+構(gòu)件"架構(gòu)模式的大規(guī)模軟件系
統(tǒng)的開發(fā)解決了一個關(guān)鍵的技術(shù)難題。
圖l是本發(fā)明中構(gòu)件的即插即用方法流程圖2是基于IBP的即插即用結(jié)構(gòu)圖3是IBP互聯(lián)底板類圖4是構(gòu)件菜單命令路由中WINDOWS資源沖突的自動消解示例圖。
具體實施例方式
本發(fā)明提出的構(gòu)件的即插即用方法,結(jié)合附圖和實施例說明如下。
該方法是以基于模板方法的IBP互聯(lián)底板為基礎(chǔ)而實現(xiàn)的,IBP 包括平臺框架,即插父類和構(gòu)件子類、即用父類和構(gòu)件資源命令路 由子類,即插父類和即用父類位于平臺中,構(gòu)件子類和構(gòu)件資源命令 路由子類位于構(gòu)件中,且分別繼承于即插父類和即用父類,平臺框架 調(diào)用即插父類和即用父類;該方法包括以下步驟文件配置,準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)件導(dǎo)出函數(shù);構(gòu)件加載,平 臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動態(tài)地將構(gòu)件加載到平臺的地 址空間中;構(gòu)件功能映射,將構(gòu)件用于交互的構(gòu)件資源動態(tài)加載到平
臺的地址空間中,完成構(gòu)件功能在平臺上的動態(tài)映射;構(gòu)件功能調(diào)用, 對構(gòu)件功能進(jìn)行動態(tài)感知和動態(tài)調(diào)用,以實現(xiàn)構(gòu)件功能;構(gòu)件卸載, 平臺調(diào)用構(gòu)件卸載函數(shù)將構(gòu)件動態(tài)卸載。 實施例i
本實施例中平臺為Windows應(yīng)用程序(EXE),構(gòu)件為規(guī)則DLL 或擴展DLL,構(gòu)件資源分別為菜單和對話框。XTP(XTREME TOOLKITPROvl2丄l版)是一個界面管理套件,基本思想是將每一 個菜單和工具條按鈕都視為一個控件(Control),其所有屬性和操作 封裝為CXTPControl類,CXTPControl為每個菜單定義一個屬性集, 這些屬性記錄了菜單的ID值,在此基礎(chǔ)上增加了"構(gòu)件名稱"屬性。利 用本發(fā)明提供的自動消解Windows資源沖突的即插即用方法來實現(xiàn) 規(guī)則DLL的完全動態(tài)加載;菜單資源的動態(tài)載入和菜單命令路由方 法;對話框資源的沖突自動消解方法。本實施例詳細(xì)過程為
如圖3所示IBP的類結(jié)構(gòu)圖,平臺框架為CMainFrame,即插父類 為CPlugBase,規(guī)則DLL子類為CPlugComponent,即用父類為CWnd, 規(guī)則DLL資源命令路由子類為CDllMessageEntry。
文件配置
準(zhǔn)備一個配置文件記錄需要加載的規(guī)則DLL名dllName及其導(dǎo)出 函數(shù)Plug—CreateObject。
構(gòu)件加載,動態(tài)地加載規(guī)則DLL:
CMainFrame讀取配置文件獲取規(guī)則DLL名dllName和導(dǎo)出函數(shù) Plug—CreateObject,并調(diào)用規(guī)則DLL加載函數(shù)將其加載到平臺的地址 空間中。
構(gòu)件功能映射,規(guī)則DLL菜單資源的動態(tài)載入在規(guī)則DLL導(dǎo)出函數(shù)中實例化規(guī)則DLL子類CPlugComponent對 象并將其返回給CMainFrame;利用XTP來建立規(guī)則DLL菜單ID和 dllName的映射關(guān)系;CMainFrame使用規(guī)則DLL子類CPlugComponent 對象調(diào)用即插父類CPlugBase的模板函數(shù)LoadComponent來完成菜單 的加載,在這個過程中,模板函數(shù)調(diào)用獲取菜單資源的原語操作函數(shù) GetMenuHandle和GetMenuName分別獲得規(guī)則DLL菜單句柄和菜單 名(若資源為工具條,則用GetToolBarID等原語操作函數(shù)獲取工具條 相關(guān)信息),由于獲取菜單資源的原語搡作函數(shù)為純虛函數(shù),所以實 際調(diào)用的是規(guī)則DLL子類中相應(yīng)的獲取菜單資源的原語操作函數(shù),從 而獲取菜單資源并加載,同時LoadComponent還調(diào)用 GetMenuMessageEntry函數(shù)獲得規(guī)則DLL菜單命令路由子類 CDllMessageEntiy的對象;建立dllName和CDllMessageEntry的映射關(guān) 系,從而形成"DLL菜單ID—dllName—CDllMessageEntry對象"的映射 關(guān)系,用于菜單命令消息的路由方法。
構(gòu)件功能調(diào)用,平臺動態(tài)地感知并調(diào)用規(guī)則DLL功能
在規(guī)則DLL功能發(fā)生變化時,如其導(dǎo)出函數(shù)增加或減少,需要使 平臺動態(tài)感知其變化以便正確地調(diào)用,釆用通過規(guī)則DLL菜單的"橋" 模式來適應(yīng)規(guī)則DLL功能的變化,即 一個菜單項對應(yīng)規(guī)則DLL的 一項 功能,每增加(減少) 一項功能就增加(減少) 一個菜單,而規(guī)則 DLL的菜單在平臺運行時動態(tài)加載,通過規(guī)則DLL菜單的命令消息來 響應(yīng)并調(diào)用規(guī)則DLL對應(yīng)的功能。
自動消解Windows資源沖突的方法,菜單命令消息路由方法,參 照圖4實現(xiàn)
通過鼠標(biāo)點擊確定菜單所屬的控件對象,從而得到菜單所屬的 DLL的dllName , XTP將菜單當(dāng)作Button來處理,XTP的 CXTPCommandBar通過捕獲鼠標(biāo)的WMJ3UTTONUP消息來判斷鼠 標(biāo)觸發(fā)的菜單控件對象,該對象控件包含菜單ID和其所屬的規(guī)則DLL的dllName;根據(jù)上述"DLL菜單ID—dllName—CDllMessageEntry對 象"得到規(guī)則DLL菜單命令路由子類CDllMessageEntry的對象 pMessageEntry; WM—LBUTTONUP消息響應(yīng)函數(shù)最終將菜單被觸發(fā) 的命令消息WM一COMMAND發(fā)送到CMainFrame ,在其響應(yīng)函數(shù) OnCommand中調(diào)用pMessageEntry的消息的路由函數(shù)OnCmdMsg對規(guī) 則DLL的菜單命令消息準(zhǔn)確的路由到規(guī)則DLL處理函數(shù)中。整個過程 為 CXTPCommandBar::OnLButtonUp —
CXTPControlButton::OnLButtonUP — CXTPControl::OnExecute — NotifyExecute— CMainFrame:: OnCommand —
pMessageEntry->OnCmdMsg。在這個過程中,即使存在平臺菜單ID 和規(guī)則DLL菜單ID沖突,或是規(guī)則DLL之間菜單ID沖突,也能完成正 確的路由。
自動消解Windows資源沖突的方法,對話框資源的沖突自動消解 方法
先獲取當(dāng)前規(guī)則DLL的實例句柄hDll;保存框架當(dāng)前搜索的資源 空間實例句柄, 一般用函教AfkGetResourceHandle;將規(guī)則DLL的資
源空間置為框架當(dāng)前搜索的資源空間,用 AfeSetResourceHandle(hDll);創(chuàng)建對話框,CDialog::Create(IDD, pParent);將資源空間恢復(fù)至先前的資源空間(通過保存的實例句柄)。 構(gòu)件卸載,動態(tài)地卸載規(guī)則DLL-.
在不需要用到規(guī)則DLL所提供的功能時,平臺調(diào)規(guī)則DLL卸載函 數(shù)將其卸載,其過程是先析構(gòu)規(guī)則DLL子類CPlugComponent對象,再 卸載規(guī)則DLL。 實施例2
本實施例中平臺為Windows應(yīng)用程序(EXE),構(gòu)件為COM組件。 本實施例與實施例l所使用的方法、過程基本相同,在下面兩個具體 步驟中有所區(qū)別,其他步驟與實施例l相同或類似。文件配置
準(zhǔn)備一個配置文件記錄需要加載的COM組件名以及COM對象接 口及其GUID ( 如接 口名為IJoint , 其GUID為 25AB3BAl-58D0-40b9-ADDl誦C604DA47FD27)。不同的COM組件雖 然其接口名稱相同(比如為IJoint),但接口的實現(xiàn)對象類GUID不同, 因此,平臺能夠準(zhǔn)確將這些接口區(qū)別開。
構(gòu)件加載,動態(tài)地加載COM組件
CMainFrame讀取配置文件獲取COM組件名,通過COM組件實例 化函數(shù)CoCreatelnstance獲取接口 Ijoint的智能指針(由于Ijoint接口的 實現(xiàn)類對象GUID值不同,因此不同COM組件的Ijoint指針值不同), 通過該智能指針方法的調(diào)用來實例化COM組件中子類 CPlugComponent對象并將其返回給CMainFrame。
以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān) 技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下, 還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明 的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
1權(quán)利要求
1、一種構(gòu)件的即插即用方法,其特征在于,該方法以基于模板方法設(shè)計模式的IBP互聯(lián)底板為基礎(chǔ)而實現(xiàn),IBP互聯(lián)底板包括平臺框架,即插父類及其構(gòu)件子類、即用父類及其構(gòu)件資源命令路由子類,所述即插父類和即用父類位于平臺中,所述構(gòu)件子類和構(gòu)件資源命令路由子類位于構(gòu)件中,平臺框架繼承即用父類,且調(diào)用即插父類和即用父類,該方法包括以下步驟文件配置,準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)件導(dǎo)出函數(shù);構(gòu)件加載,平臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動態(tài)地將構(gòu)件加載到平臺的地址空間中;構(gòu)件功能映射,將構(gòu)件用于交互的構(gòu)件資源動態(tài)加載到平臺的地址空間中,完成構(gòu)件功能在平臺上的動態(tài)映射;構(gòu)件功能調(diào)用,對構(gòu)件功能進(jìn)行動態(tài)感知和動態(tài)調(diào)用,以實現(xiàn)構(gòu)件功能;構(gòu)件卸載,平臺調(diào)用構(gòu)件卸載函數(shù)將構(gòu)件動態(tài)卸載。
2、 如權(quán)利要求l所述的構(gòu)件的即插即用方法,其特征在于,所述 構(gòu)件功能映射包括以下步驟.-平臺框架調(diào)用構(gòu)件的導(dǎo)出函數(shù)實例化構(gòu)件子類對象; 利用XTP來建立構(gòu)件資源ID和構(gòu)件名的映射關(guān)系; 平臺框架調(diào)用即插父類中的模板函數(shù)來實現(xiàn)構(gòu)件資源的加載,并獲取構(gòu)件資源命令路由子類對象;建立構(gòu)件名和構(gòu)件資源路由子類對象的映射關(guān)系,從而形成"構(gòu)件資源ID—構(gòu)件名—構(gòu)件資源命令路由子類對象"的映射關(guān)系。
3、 如權(quán)利要求1或2所述的構(gòu)件的即插即用方法,其特征在于, 所述構(gòu)件包括規(guī)則DLL、擴展DLL和COM組件。
4、 一種利用權(quán)利要求1或2所述的構(gòu)件的即插即用方法來自動消解Windows資源沖突的方法,其特征在于,所述自動消解Windows資源沖突的方法還包括如下步驟確定資源所屬的控件對象,從而得到資源所屬的構(gòu)件的構(gòu)件名; 根據(jù)構(gòu)件名找到構(gòu)件資源命令路由子類對象,從而得到構(gòu)件資源命令路由的入口點;通過構(gòu)件資源命令路由子類對象將構(gòu)件資源命令準(zhǔn)確的路由到相應(yīng)的處理函數(shù)進(jìn)行處理。
5、 如權(quán)利要求4所述的構(gòu)件的自動消解Windows資源沖突的方 法,其特征在于,所述的構(gòu)件資源包括菜單、工具條和快捷鍵。
6、 一種利用權(quán)利要求1或2所述的構(gòu)件的即插即用方法來自動消 解Windows資源沖突的方法,其特征在于,所述自動消解Windows資 源沖突的方法還包括如下步驟獲取當(dāng)前構(gòu)件的實例句柄;保存平臺框架當(dāng)前搜索的資源空間實例句柄;將構(gòu)件的資源空間置為框架當(dāng)前搜索的資源空間;創(chuàng)建構(gòu)件資源;將資源空間通過保存的實例句柄恢復(fù)至先前的資源空間。
7、 如權(quán)利要求6所述的自動消解Windows資源沖突的方法,其特 征在于,所述的構(gòu)件資源包括對話框、視口和窗體。
8、 一種構(gòu)件的即插即用系統(tǒng),其特征在于,包括 文件配置模塊,用于準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)件導(dǎo)出函數(shù);構(gòu)件加載模塊,用于平臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動 態(tài)地將構(gòu)件加載到平臺的地址空間中;構(gòu)件功能映射模塊,用于將構(gòu)件用于交互的構(gòu)件資源動態(tài)加載到平臺的地址空間中,完成構(gòu)件功能在平臺上的動態(tài)映射;.構(gòu)件功能調(diào)用模塊,用于對構(gòu)件功能進(jìn)行動態(tài)感知和動態(tài)調(diào)用,以實現(xiàn)構(gòu)件功能;構(gòu)件卸載模塊,用于平臺調(diào)用構(gòu)件卸載函數(shù)將構(gòu)件動態(tài)卸載。
9、 如權(quán)利要求8所述的構(gòu)件即插即用系統(tǒng),其特征在于,所述構(gòu)件映射功能模塊包括用于平臺框架調(diào)用構(gòu)件的導(dǎo)出函數(shù)實例化構(gòu)件子類對象的模塊;用于利用XTP來建立構(gòu)件資源ID和構(gòu)件名的映射關(guān)系的模塊;用于平臺框架調(diào)用即插父類中的模板函數(shù)來實現(xiàn)構(gòu)件資源的加載,并獲取構(gòu)件資源命令路由子類對象的模塊;用于建立構(gòu)件名和構(gòu)件資源路由子類對象的映射關(guān)系,從而形成"構(gòu)件資源ID—構(gòu)件名—構(gòu)件資源命令路由子類對象"的映射關(guān)系的模塊。
10、 一種包含權(quán)利要求8的構(gòu)件的即插即用系統(tǒng)的自動消解 Windows資源的系統(tǒng),其特征在于,包括用于確定資源所屬的控件對象,從而得到資源所屬的構(gòu)件的構(gòu)件 名的模塊;用于根據(jù)構(gòu)件名找到構(gòu)件資源命令路由子類對象,從而得到構(gòu)件資源命令路由的入口點的模塊;用于通過構(gòu)件資源命令路由子類對象將構(gòu)件資源命令準(zhǔn)確的路 由到相應(yīng)的處理函數(shù)進(jìn)行處理的模塊。
11、 一種包含權(quán)利要求8的構(gòu)件的即插即用系統(tǒng)的自動消解 Windows資源的系統(tǒng),其特征在于,還包括用于獲取當(dāng)前構(gòu)件的實例句柄的模塊;用于保存平臺框架當(dāng)前搜索的資源空間實例句柄的模塊;用于將構(gòu)件的資源空間置為框架當(dāng)前搜索的資源空間的模塊;用于創(chuàng)建構(gòu)件資源的模塊;用于將資源空間通過保存的實例句柄恢復(fù)至先前的資源空間模塊。
全文摘要
本發(fā)明公開了一種構(gòu)件的即插即用方法,該方法以基于模板方法設(shè)計模式的IBP互聯(lián)底板為基礎(chǔ),包括步驟文件配置,準(zhǔn)備配置文件來記錄需要加載構(gòu)件的構(gòu)件名及構(gòu)件導(dǎo)出函數(shù);構(gòu)件加載,平臺讀取配置文件,調(diào)用構(gòu)件加載函數(shù),動態(tài)地將構(gòu)件加載到平臺地址空間中;構(gòu)件功能映射,將構(gòu)件用于交互的構(gòu)件資源動態(tài)加載到平臺的地址空間中,完成構(gòu)件功能在平臺上的動態(tài)映射;構(gòu)件功能調(diào)用,對構(gòu)件功能進(jìn)行動態(tài)感知和動態(tài)調(diào)用;構(gòu)件卸載,平臺調(diào)用構(gòu)件卸載函數(shù)將構(gòu)件動態(tài)卸載。基于構(gòu)件的即插即用方法系統(tǒng)包括文件配置模塊;構(gòu)件加載模塊;構(gòu)件功能映射模塊;構(gòu)件功能調(diào)用模塊;構(gòu)件卸載模塊。本發(fā)明能夠?qū)崿F(xiàn)構(gòu)件功能的動態(tài)調(diào)用和自動消解Windows資源沖突。
文檔編號G06F9/44GK101639777SQ200910092209
公開日2010年2月3日 申請日期2009年9月7日 優(yōu)先權(quán)日2009年9月7日
發(fā)明者元 李, 馬亞平 申請人:李 元;馬亞平