Protel二次開發(fā)從入門到精通解析_第1頁
Protel二次開發(fā)從入門到精通解析_第2頁
Protel二次開發(fā)從入門到精通解析_第3頁
Protel二次開發(fā)從入門到精通解析_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、歡迎訪問 Freekaoyan 論文站 Protel 二次開發(fā)從入 門到精通歡迎訪問 Freekaoyan 論文站第七章 Protel 服務(wù)器開發(fā)1. 前言在前面的章節(jié)中,我們使用了很多 API 過程和函數(shù)來開發(fā)各種附加的服務(wù) 器,并編寫了相應(yīng)的進(jìn)程來實現(xiàn)各種不同的功能。我們能否開發(fā)出象原理圖或 印制板一樣的服務(wù)器,或開發(fā)一個簡單的文本服務(wù)器呢?在本章,我們將分析SDK提供的一些服務(wù)器代碼,來揭開服務(wù)器開發(fā)的奧 秘。2. 一個簡單的對話框 CommonDialog process2.1 服務(wù)器功能本服務(wù)器功能很簡單,僅是彈出一個顏色對話框,您可以選擇一個新的顏 色,選擇好后,退出對話框,系統(tǒng)使

2、用一個 ShowInfo 過程來顯示新的顏色值。 此程序主要功能是示范如何使用 MessageRouter_Se ndComma ndToModi來調(diào)用 Client 服務(wù)器中 RunCommonDialo進(jìn)程。代碼請見 /SAMPLES/NO7/Servers/CommonDialog process。2.2 代碼分析2.2.1 main 單元在 main 單元中,定義一個 TRunADialogProcess 類,從 TServerModule 繼 承。過程 CreateServer 創(chuàng)建 TRunADialogProcess 類實例并加載命令表。代碼 實現(xiàn)如下:Procedure Cre

3、ateServer;BeginServerModule :=TRunADialogProcess.Create;LoadCommandLauncherTable;End;LoadCommandLauncherTabiei程定義在單元 ComTable中。2.2.2 增加進(jìn)程到命令表在ComTable單元中,增加一個進(jìn)程到命令表中,代碼實現(xiàn)如下:Procedure LoadCommandLauncherTable;BeginCreateCommandLauncherTable;CommandLauncherTable_State_AddCommand( RunADialogProcess,Com

4、mand_RunADialogProcess);SortCommandLauncherTable;End;Comma ndLa un cherTable_State_AddComma過程通過提供進(jìn)程的名稱和進(jìn)程 函數(shù)指針來增加一個進(jìn)程入口到命令表中。命令表綁定一個進(jìn)程的名稱到在運(yùn) 行時實現(xiàn)進(jìn)程的實際函數(shù)。只要一個進(jìn)程在服務(wù)器內(nèi)被調(diào)用,為查找實際的函 數(shù)指針,此命令表就會被查找,如果在表中沒有查找到進(jìn)程的名稱,將不會執(zhí) 行什么動作。223 Comma nds 單元主程序Command_RunADialogProces代碼實現(xiàn)如下:Procedure Command_RunADialogProce

5、ss(Window : TServerWindow;Parameters : PChar);BeginRunADialogProcess;End;下面,只要實現(xiàn) RunADialogProcess 過程就可以了, RunADialogProcess 過 程定義也很簡單。Procedure RunADialogProcess;VarP: PChar;S: TString;Color : Integer;BeginGetMem(P, 4048); / 申請內(nèi)存。SetState_Parameter(P,Dialog,Color);/SetState_Parameter 過程插入一個參數(shù)到指定的參數(shù)

6、文本塊中。過程共 有三個參數(shù),分別為P,Nmae和Value。/P指定到一個參數(shù)文本塊的指針,Name指定要被插入的參數(shù)名稱,Value指 定要被插入的參數(shù)值。SetState_Parameter(P,Color, 0);MessageRouter_SendCommandToModule(Client:RunCommonDialog,P,4048 ,0);MessageRouter_Se ndComma ndToModul函數(shù)運(yùn)行在指定模塊內(nèi)的指定的過 程,如果成功則返回 T ru e ,否則返回 Flase,/ 此函數(shù)允許一個服務(wù)器來運(yùn)行一個在其它服務(wù)器中的進(jìn)程,為了運(yùn)行進(jìn) 程,需要指定目標(biāo)

7、文檔對象的窗體句柄,/ 例如,如果您從文本服務(wù)器運(yùn)行一個進(jìn)程,且當(dāng)前打開兩個文本文件, 您需要使用此參數(shù)來指定哪一個文本文檔要/ 被操作,如果沒有文檔被此服務(wù)器支持,參數(shù) EditorWindow 應(yīng)該被設(shè)置 為 cProcessWindow_DontCare,如果目標(biāo)服/ 務(wù)器沒有啟動,此函數(shù)會自動啟動目標(biāo)服務(wù)器。/ 如果此模塊的標(biāo)識符沒有提供在 Process 進(jìn)程參數(shù)中,它默認(rèn)為Clie nt,舉例來說,CreateNewDocume nt被認(rèn)/ 為是 Client:CreateNewDocument 。/ 進(jìn)程能使用 Parameter 參數(shù)來返回結(jié)果,例如Client:RunComm

8、onDialog 進(jìn)程運(yùn)行一個對話框并且通過 Parameter 返回結(jié) 果。/ 函數(shù)共有四個參數(shù),如下所示:/ 參數(shù)類型描述/ProcessTString 指定完整的進(jìn)程名稱,舉例來說, Macro:RunMacro, 此參數(shù)對大小寫不敏感。/ParametersPChar 指定進(jìn)程參數(shù)內(nèi)存的指針 (空值終止 ) ,此參數(shù)對大小寫 不敏感。/MaxParameterSizeInteger 指定為參數(shù)分配的內(nèi)存大小。/EditorWindowHWnd 目標(biāo)文檔對象窗體句柄。GetState_Parameter(P,Result,S);/從參數(shù)塊P中檢索Result,并放到字符串S中,如果為True,說明有返 回值,如果為 False 說明無返回值。/GetState_Parameter 函數(shù)從參數(shù)塊中檢索一個參數(shù)值,如果找到返回 True,否則返回False,參數(shù)以一個空終止符結(jié)尾的數(shù)組形式被傳遞到進(jìn)程 中。If (S = True) ThenBeginGetState_Parameter(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論