UG軟件二次開發(fā)課程第五課_第1頁
UG軟件二次開發(fā)課程第五課_第2頁
UG軟件二次開發(fā)課程第五課_第3頁
UG軟件二次開發(fā)課程第五課_第4頁
UG軟件二次開發(fā)課程第五課_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1MenuScript菜單定制菜單定制 MenuScript是是UG/Open二次開發(fā)軟件包中的二次開發(fā)軟件包中的一部分,它是一套用于定義一部分,它是一套用于定義UGUG菜單的腳本語言。菜單的腳本語言。UGUG自身的菜單也是用自身的菜單也是用MenuScript寫成的,用戶寫成的,用戶使用使用MenuScript可以可以修改修改UGUG的菜單結構的菜單結構,添加添加或或刪除刪除和和定制菜單定制菜單,以及,以及改變菜單的顯示文本改變菜單的顯示文本或或響應響應行為行為等。等。 2ufsta n可利用可利用UI StylerUI Styler所定制的界面來實現(xiàn)面向對象、所定制的界面來實現(xiàn)面向對象、交

2、互式的操作過程交互式的操作過程n沒有明顯的執(zhí)行過程沒有明顯的執(zhí)行過程n整個程序除整個程序除回調函數(shù)回調函數(shù)的注冊過程外,都是純粹事的注冊過程外,都是純粹事件驅動的件驅動的n每一個界面上的控件都可對應一個回調函數(shù),當用戶每一個界面上的控件都可對應一個回調函數(shù),當用戶與相應的與相應的UIUI對象發(fā)生交互時,此對應的回調函數(shù)就被對象發(fā)生交互時,此對應的回調函數(shù)就被執(zhí)行。執(zhí)行。 3UF的系統(tǒng)設置的系統(tǒng)設置 n方法一方法一 打開打開UG目錄下的目錄下的 Ugiiugii_env.dat文件,在文件中找到文件,在文件中找到# #UG_VENDOR_DIR=$UGALLIANCE_DIRvendor# #U

3、GII_SITE_DIR= $UGALLIANCE_DIRsite 4UF的系統(tǒng)設置的系統(tǒng)設置 方法一方法一 將它們前面的注釋符號將它們前面的注釋符號“# #”刪除。它們刪除。它們指明了供用戶放置二次開發(fā)文件的目錄指明了供用戶放置二次開發(fā)文件的目錄 。 當刪掉當刪掉“# #”號后,號后,UG/OpenUG/Open才能從這些才能從這些目錄下得到二次開發(fā)的功能擴充。目錄下得到二次開發(fā)的功能擴充。5UF的系統(tǒng)設置的系統(tǒng)設置 方法一方法一n這兩個目錄這兩個目錄 D:UGSNX 4.0UGALLIANCEsite D:UGSNX 4.0UGALLIANCEvendor功能和結構是完全相同的,都有功能和

4、結構是完全相同的,都有startup startup 和和application application 這兩個目錄這兩個目錄。6UF的系統(tǒng)設置的系統(tǒng)設置 方法一方法一nstartup目錄目錄存放存放UG啟動時需載入的文件,如啟動時需載入的文件,如*.men 菜單腳本文件菜單腳本文件*.dll ufsta()()的動態(tài)鏈接庫文件的動態(tài)鏈接庫文件7UF的系統(tǒng)設置的系統(tǒng)設置 方法一方法一napplication目錄目錄則存放具體功能擴展的程序文件,如則存放具體功能擴展的程序文件,如*.dlg 對話框資源文件等對話框資源文件等 8UGUG設的這兩個目錄設的這兩個目錄 site和和 vendor,是為

5、是為了供給不同等級的開發(fā)者使用了供給不同等級的開發(fā)者使用: : vendor下放置下放置UG指定開發(fā)商的二次開發(fā)產品指定開發(fā)商的二次開發(fā)產品site下則存放其余開發(fā)者的產品下則存放其余開發(fā)者的產品 vendor目錄下同類內容的文件要目錄下同類內容的文件要比比site目錄下的優(yōu)先載入。目錄下的優(yōu)先載入。 9 在在ugii_env.dat文件中還有一條語句,是用文件中還有一條語句,是用來設置存放用戶自己二次開發(fā)內容的目錄:來設置存放用戶自己二次開發(fā)內容的目錄: UGII_USER_DIR=$HOME 同樣將其前面的同樣將其前面的“# #”號刪除,并且在其后面添號刪除,并且在其后面添上用戶的目錄上用

6、戶的目錄例例:UGII_USER_DIR=f:user在此目錄下必須有在此目錄下必須有startup和和application目錄,目錄,它的優(yōu)先級更低。它的優(yōu)先級更低。 10UF的系統(tǒng)設置的系統(tǒng)設置 方法二方法二 n在在Windows 環(huán)境下,在環(huán)境下,在我的電腦我的電腦屬性屬性高級高級環(huán)境變量環(huán)境變量系統(tǒng)變量對話框系統(tǒng)變量對話框中中 ,設置用戶變量設置用戶變量UGII_USER_DIR為用戶為用戶二次開發(fā)內容的目錄。二次開發(fā)內容的目錄。例:用戶目錄為例:用戶目錄為f:blkf:blk,在在blkblk下設下設置有置有startupstartup和和applicationapplicatio

7、n目錄目錄 。1112編程框架編程框架 1.1. 定制菜單定制菜單 打開打開notepad,編寫菜單腳本程序編寫菜單腳本程序(Menu Script),),保存為保存為*.men。 用來定制用來定制UGUG主菜單,以使用戶可以主菜單,以使用戶可以調用所作的調用所作的UIUI界面,實現(xiàn)交互式操作。界面,實現(xiàn)交互式操作。 13菜單腳本文件菜單腳本文件菜單腳本文件菜單腳本文件* *.men.men必須存放到必須存放到startupstartup目錄中目錄中 14VERSIONVERSION120 120 / /* *兼容兼容UGv12UGv12的菜單腳本的菜單腳本* */ /EDIT UG_GATE

8、WAY_MAIN_MENUBAREDIT UG_GATEWAY_MAIN_MENUBAR/ /* *編輯編輯UGUG主菜單主菜單* */ /HIDE UG_HELP HIDE UG_HELP / /* *隱藏隱藏HelpHelp菜單菜單* */ /BEFORE UG_HELP BEFORE UG_HELP / /* *表示第一級菜單位于表示第一級菜單位于HelpHelp菜單之前菜單之前* */ /CASCADE_BUTTONCASCADE_BUTTON MENU_ID_1MENU_ID_1 / /* *定義第一級菜單的定義第一級菜單的IDID,它是下拉菜單它是下拉菜單* */ /LABEL T

9、ESTLABEL TEST / /* *定義菜單的標題定義菜單的標題* */ /END_OF_BEFORE END_OF_BEFORE / /* *結束第一級菜單的編輯結束第一級菜單的編輯* */ /MENU MENU MENU_ID_1MENU_ID_1 / /* *編輯第二級菜單,是編輯第二級菜單,是MENU_ID_1MENU_ID_1的下拉菜單的下拉菜單* */ /CASCADE_BUTTON CASCADE_BUTTON MENU_ID_1_1MENU_ID_1_1 / /* *定義第二級菜單的定義第二級菜單的IDID,它是下拉菜單它是下拉菜單* */ /LABEL APITEST L

10、ABEL APITEST / /* *定義菜單標題定義菜單標題* */ /SEPARATOR SEPARATOR / /* *菜單中的分隔線菜單中的分隔線* */ /BUTTON BUTTON MENU_ID_1_2MENU_ID_1_2 / /* *定義第二級菜單的定義第二級菜單的IDID,它不是下拉菜單它不是下拉菜單* */ /LABEL WINDOWS CALCULATORTEST LABEL WINDOWS CALCULATORTEST / /* *定義菜單標題定義菜單標題* */ /ACTIONS ACTIONS “CALCCALC” / /* *運行運行windowswindows

11、的計算器的計算器* */ /END_OF_MENU END_OF_MENU / /* *結束第二級菜單的編輯結束第二級菜單的編輯* */ /MENU MENU MENU_ID_1_1MENU_ID_1_1 / /* *編輯第三級菜單,是編輯第三級菜單,是MENU_ID_1_1MENU_ID_1_1的下拉菜單的下拉菜單* */ /BUTTON BUTTON MENU_ID_1_1_1MENU_ID_1_1_1 / /* *定義第三級菜單的定義第三級菜單的IDID,它不是下拉菜單它不是下拉菜單* */ /LABEL RUNAPIPROGRAMLABEL RUNAPIPROGRAM/ /* *定義菜

12、單標題定義菜單標題* */ /ACTIONS api_test.dlg ACTIONS api_test.dlg / /* *運行運行UIStylerUIStyler所編寫的界面所編寫的界面api_test.dlgapi_test.dlg* */ /END_OF_MENU END_OF_MENU / /* *結束第三級菜單的編輯結束第三級菜單的編輯* */ /15用戶定制的主界面用戶定制的主界面 n例例1生成的用戶界面生成的用戶界面16VERSION 120VERSION 120EDIT UG_GATEWAY_MAIN_MENUBAREDIT UG_GATEWAY_MAIN_MENUBARBE

13、FORE UG_HELPBEFORE UG_HELP/ /* *表示第一級菜單位于表示第一級菜單位于HelpHelp菜單之前菜單之前* */ / CASCADE_BUTTON CASCADE_BUTTON UISTYLER_DLG_CASCADE_BTNUISTYLER_DLG_CASCADE_BTN / /* *定義第一級菜單的定義第一級菜單的IDID,它是下拉菜單它是下拉菜單* */ / LABEL JiemianLABEL Jiemian END_OF_BEFORE END_OF_BEFORE MENU MENU UISTYLER_DLG_CASCADE_BTNUISTYLER_DLG_

14、CASCADE_BTNBUTTON SETBUTTON SETLABEL LABEL SetmenuSetmenuACTIONS set.dlgACTIONS set.dlg BUTTON APPLYBUTTON APPLY LABEL LABEL ApplyApplyACTIONS apply.dlgACTIONS apply.dlg END_OF_MENU END_OF_MENU17用戶定制的主界面用戶定制的主界面n例例2生成的用戶界面生成的用戶界面18編程框架編程框架2.2. 定制定制界面界面 啟動啟動UGUG,點擊點擊ApplicationUser Interface Styler,出

15、現(xiàn)一個可視界面的出現(xiàn)一個可視界面的開發(fā)工具,在界面上可以任意添加開發(fā)工具,在界面上可以任意添加UIUI對對象,在保存以后會生成三個文件:象,在保存以后會生成三個文件: *_template.c、*.h、*.dlg,分別是界面分別是界面的的C C程序模板和界面的資源文件。程序模板和界面的資源文件。 19UIStyler用戶界面制作工具用戶界面制作工具 nUG/OpenUG/Open二次開發(fā)包中包含了用于開發(fā)用二次開發(fā)包中包含了用于開發(fā)用戶界面的工具戶界面的工具UI StylerUI Styler,它位于它位于Application User Interface Styler它提供了全部它提供了全

16、部UGUG的標準可視控件,能制的標準可視控件,能制作作UGUG風格的交互界面。風格的交互界面。 20UIStyler用戶界面制作工具用戶界面制作工具n用戶在用戶在User Interface Styler中可以自由中可以自由添加各種控件,控制各種控件在對話框添加各種控件,控制各種控件在對話框中的排列順序。中的排列順序。21UIStyler用戶界面制作工具用戶界面制作工具n編輯完對話框后編輯完對話框后保存保存時,會自動產生三個時,會自動產生三個文件文件 * *. .dlgdlg對話框資源文件對話框資源文件 * *_ _template.ctemplate.c和和* *. .h hUFUF的的C

17、C源碼模板文源碼模板文件件。22UIStyler用戶界面制作工具用戶界面制作工具n用戶用戶只須將只須將* *_ _template.ctemplate.c和和* *. .h h添加入工添加入工程,再向程,再向C C源碼模板中的各源碼模板中的各回調函數(shù)回調函數(shù)框架框架內添加實現(xiàn)自己功能的代碼,即可編譯、內添加實現(xiàn)自己功能的代碼,即可編譯、鏈接成動態(tài)鏈接庫鏈接成動態(tài)鏈接庫* *. .dlldll。 23對話框控件對話框控件資源編輯器資源編輯器對話框對話框對象瀏覽器對象瀏覽器24UIStyler使用注意使用注意 1.1. 對于每個對話框的對于每個對話框的Prefix NamePrefix Name最

18、好最好有表達其實際意義的名字,以免在程有表達其實際意義的名字,以免在程序中混淆;序中混淆;2.2. 對于每個控件的對于每個控件的IdentifierIdentifier最好也有最好也有表達其實際意義的名字;表達其實際意義的名字;252627UIStyler使用注意使用注意 3.3. 對于每個對話框的對于每個對話框的Launch Dialog FromLaunch Dialog From,應根據(jù)不同的入口方式設置不同內容。應根據(jù)不同的入口方式設置不同內容。AllAll用戶可以在程序中設置入口方式;用戶可以在程序中設置入口方式;CallbackCallback表示此對話框是從其它對話框的回表示此對

19、話框是從其它對話框的回 調函數(shù)中進入,即由別的對話框的控件啟動它;調函數(shù)中進入,即由別的對話框的控件啟動它;MenuMenu表示此對話框是從表示此對話框是從UGUG菜單中調出;菜單中調出;UserUser ExitExit表示由其它的入口進入。表示由其它的入口進入。 2829UIStyler使用注意使用注意 4.4. 對于控件的對于控件的CallbacksCallbacks回調函數(shù)設置回調函數(shù)設置中,中,Creates DialogCreates Dialog檢查框表示此回檢查框表示此回調函數(shù)是否可以調出下一個對話框。調函數(shù)是否可以調出下一個對話框。 5.5. AttachmentsAttac

20、hments是用來設置控件在對話是用來設置控件在對話框中的位置??蛑械奈恢?。 303132對話框編輯示例對話框編輯示例 33用戶界面制作方法用戶界面制作方法34用戶定制菜單的制作用戶定制菜單的制作 n使用第二個菜單腳本文件使用第二個菜單腳本文件 在此例中,用戶定制的菜單在此例中,用戶定制的菜單Jiemian包含兩項內容,即包含兩項內容,即Setmenu和和Apply,它它們都會彈出對話框,其中們都會彈出對話框,其中Apply的對話框的對話框Apply_app還會產生子對話框還會產生子對話框app。 3536用戶界面制作方法用戶界面制作方法n單擊單擊UGUG的的ApplicationUser I

21、nterface ApplicationUser Interface StylerStyler,則出現(xiàn)制作用戶界面的則出現(xiàn)制作用戶界面的UG界面界面n或或 起始起始所有應用模塊所有應用模塊用戶界面樣式用戶界面樣式編輯器編輯器3738用戶界面制作方法用戶界面制作方法n如果是建立新的對話框,則可以直接使用如果是建立新的對話框,則可以直接使用UG提供的可視控件來生成需要的對話框。提供的可視控件來生成需要的對話框。單擊需要的控件,則在左邊的對話框模型中單擊需要的控件,則在左邊的對話框模型中生成相應的按鈕或其它所要求的形式,同時在生成相應的按鈕或其它所要求的形式,同時在界面的右邊對話框參數(shù)控制區(qū)中的對象

22、瀏覽區(qū)界面的右邊對話框參數(shù)控制區(qū)中的對象瀏覽區(qū)中中Dialog-CHANGE下立即為所產生的對象自動下立即為所產生的對象自動起一個名字起一個名字 。39用戶界面制作方法用戶界面制作方法n如果選中如果選中Dialog-CHANGE,即可在即可在Attributes的的Dialog Title框中為用戶的框中為用戶的對話框起名字,例如對話框起名字,例如APPLY,則則Dialog-CHANGE變?yōu)樽優(yōu)镈ialog- APPLY 4041用戶界面制作方法用戶界面制作方法n在在Prefix Name框中也輸入相同的名稱框中也輸入相同的名稱 主要為了在生成的主要為了在生成的* *_ _template.

23、ctemplate.c程程序中不會由于沒有起名而所有的變量前序中不會由于沒有起名而所有的變量前綴都是綴都是CHANGE,容易由于為不同的對容易由于為不同的對話框中的變量起相同名稱而造成在程序話框中的變量起相同名稱而造成在程序調試中產生變量重復定義。調試中產生變量重復定義。 42用戶界面制作方法用戶界面制作方法n在在Callbacks項目中確定是否有子對話框產生,項目中確定是否有子對話框產生,若有,則哪些操作可控制產生子對話框。若有,則哪些操作可控制產生子對話框。n在生成控件的時候,在在生成控件的時候,在Callbacks項目中可控項目中可控制是否可通過操作此控件而產生子對話框,在制是否可通過操

24、作此控件而產生子對話框,在Creates Dialog前打鉤,則產生子對話框,前打鉤,則產生子對話框,見后面圖,此時需要在見后面圖,此時需要在Activat欄中輸入相應欄中輸入相應的控制參數(shù),例如的控制參數(shù),例如ACTION_1_APP_cb。43圖中表示圖中表示Apply和和OK的操作都可產生子對話框。的操作都可產生子對話框。則在則在apply_template.c_template.c程序中會產生相應的函數(shù)框程序中會產生相應的函數(shù)框架架APPLY_ok_cbAPPLY_ok_cb和和APPLY_apply_cbAPPLY_apply_cb。44用戶界面制作方法用戶界面制作方法n對話框的各控

25、件生成完畢時,必須在對話框的各控件生成完畢時,必須在File菜單中存儲該對話框,并選定存儲菜單中存儲該對話框,并選定存儲路徑(路徑(必須在前面生成的必須在前面生成的Application文文件夾中存儲件夾中存儲),此時有信息提示生成了),此時有信息提示生成了三個文件。三個文件。 45用戶界面制作方法用戶界面制作方法n為菜單為菜單Jiemian中包含的兩項內容(即中包含的兩項內容(即Setmenu和和Apply)分別建立工程分別建立工程例如例如apply和和Set,在加入在加入*_ _template.ctemplate.c和和* *.h.h程序時把相應的程序放入同一工程程序時把相應的程序放入同

26、一工程(包括對話框及子對話框產生的程序)。(包括對話框及子對話框產生的程序)。 46界面程序調試界面程序調試n在生成的在生成的set_template.c_template.c程序中需要做如程序中需要做如下修改:下修改:1.1. 建立工程建立工程SETSET,把把set_template.cset_template.c和和set.hset.h文件加入工程,把程序中文件加入工程,把程序中 #include 改成改成 #include “set.h”。472、把下面代碼中的、把下面代碼中的#ifdef和和#endif語句刪除,則語句刪除,則 SET 的彈的彈 出菜單會出現(xiàn)。出菜單會出現(xiàn)。#ifde

27、f MENUBAR_COMMENTED_OUTextern void ufsta (char *param, int *retcode, int rlen) int error_code; if ( (UF_initialize() != 0) return; if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message); printf ( %sn, fail_message ); UF_te

28、rminate(); return; #endif /*MENUBAR_COMMENTED_OUT*/n3、編譯,聯(lián)編,把編譯,聯(lián)編,把set.dll拷貝到拷貝到startup目錄中。目錄中。48界面程序調試界面程序調試49界面程序調試界面程序調試n在生成的在生成的apply_template.c_template.c程序中需要做程序中需要做如下修改:如下修改:1.1. 建立工程建立工程APPLYAPPLY,加入加入apply_template.c和和apply.h文件,把程序中文件,把程序中 #include 改成改成 #include “apply.h”。2.2. 把要生成子對話框的操作變

29、量前的把要生成子對話框的操作變量前的0改成改成150界面程序調試界面程序調試Static UF_STYLER_callback_info_t APPLY_cbsAPPLY_CB_COUNT = UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB , 1, APPLY_ok_cb, UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB, 1, APPLY_apply_cb, UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 ;513. 把下面代碼中的把下面代碼中的#ifdef和和#endif語句刪

30、除,則語句刪除,則APPLY的彈的彈 出菜單會出現(xiàn)。出菜單會出現(xiàn)。#ifdef MENUBAR_COMMENTED_OUTextern void ufsta (char *param, int *retcode, int rlen) int error_code; if ( (UF_initialize() != 0) return; if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 ) char fail_message133; UF_get_fail_message(error_code, fail_message

31、); printf ( %sn, fail_message ); UF_terminate(); return; #endif /*MENUBAR_COMMENTED_OUT*/524.4.把把app_template.c_template.c和和app.h.h文件加入文件加入APPLYAPPLY中,中,給下面的函數(shù)起名,只需把給下面的函數(shù)起名,只需把紅色紅色部分用用戶名部分用用戶名稱替換,例如稱替換,例如extern int app ( int *response ),并把并把#ifdef和和#endif語句刪除,語句刪除,把把#include 改成改成#include “app.h”: #

32、ifdef DISPLAY_FROM_CALLBACKextern int (int *response )代碼由代碼由UG自動生成自動生成#endif /* DISPLAY_FROM_CALLBACK */ 53界面程序調試界面程序調試5.5. 在在apply_template.c中申明函數(shù)中申明函數(shù)app,在控在控制彈出制彈出app對話框的操作函數(shù)中添加函數(shù)對話框的操作函數(shù)中添加函數(shù)app,加在加在/ /* * - -Enter your callback code here - -* */ /后。并后。并在在applyapply_template.c_template.c中中增增加加#

33、#include malloc.hinclude malloc.h。 在此例中產生在此例中產生appapp對話框的操作函數(shù)為對話框的操作函數(shù)為int APPLY_int APPLY_okok_cb_cb和和int APPLY_int APPLY_applyapply_cb_cb 54int APPLY_ok_cb ( int dialog_id, void * client_data, UF_STYLER_item_value_type_p_t callback_data) int *res=malloc(2); /*為函數(shù)為函數(shù)app中的參數(shù)分配空間中的參數(shù)分配空間*/* Make sure

34、 User Function is available. */ if ( UF_initialize() != 0) return ( UF_UI_CB_CONTINUE_DIALOG ); /* - Enter your callback code here - */ app(res); UF_terminate (); return (UF_UI_CB_EXIT_DIALOG); 55界面程序調試界面程序調試6. 編譯,聯(lián)編,把編譯,聯(lián)編,把apply.dll拷貝到拷貝到startup目目錄中。錄中。56界面程序調試界面程序調試8.8. 啟動啟動UGUG,則出現(xiàn)用戶定制界面,并可彈則出現(xiàn)用戶定制界面,并可彈出定制的對話框。出

溫馨提示

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

評論

0/150

提交評論