1©UGSCorp.2007.Allrightsreserved.用户界面开发技术日期:2007年8月2主要内容¾UIStyler对话框¾MenuScript应用¾常用标准对话框¾信息交互3©UGSCorp.2007.Allrightsreserved.UIStyler对话框4概述5如何应用UIStyler对话框6对话框的应用环境7对话框基本属性8对话框选择属性9对话框回调函数10控件11UIStyler对话框文件12对话框系统文件template.h文件template.c文件UIStyler_example.c文件示例13UIStyler对话框9UIStyler对话框的应用9UIStyler对话框的控件14UIStyler控件15控件访问常用数据类型structUF_STYLER_item_value_type_s{intreason;constchar*item_id;intsubitem_index;intcount;intitem_attr;intindicator;UF_STYLER_value_tvalue;};16控件访问常用数据类型成员成员说明reason表明触发回调函数的原因,一般不需要用户修改item_id表示控件的标识subitem_index用来标识某些控件(比如:OptionMenu、RadioBox)子对象count当value是数组时,表示数组的长度item_attr当前结构变量描述的控件属性indicator指明value的数据类型valueunion类型的数据,表明控件的值。注意:必须利用函数UF_STYLER_free_value释放为字符串或数组申请的内存。17控件常用属性属性描述Label控件的文本描述,一般表示控件用途;如果控件设置了位图属性,则显示为文本提示信息ObjectIdentifier控件标识Value控件内容,可以在构建对话框时定义,也可以通过程序进行设定Bitmap位图文件,可以是UBM、XPM或BMP文件Sensitive控件的激活开关,TRUE为激活,FALSE为非激活Focus键盘聚焦,即对话框弹出时键盘的输入位置Visibility控制控件的可见性,TRUE为控件可见,FALSE为不可见ItemType控件类型ListDeselect取消列表框中选项的选中状态ListInsert在列表框中插入若干选择项ListDelete删除列表框中的指定选项ListShow设置列表框中显示的选择项18控件访问常用函数UF_STYLER_ask_valueUF_STYLER_set_value参数参数描述dialog_id输入参数,表示被查询控件所属对话框的标识,通常是由styler对话框传递回调函数的value输入参数,用于指明被修改的控件、控件属性和控件属性值externintUF_STYLER_ask_value(intdialog_id,UF_STYLER_item_value_type_p_tvalue);19典型控件—字符串输入框(String)变量和输入参数属性变量输入参数item_attrUF_STYLER_BITMAPitem_id被设置的控件标识value.string位图文件名,UBM、XPM或BMP文件item_attrUF_STYLER_LABELitem_id被设置的控件标识value.string显示在输入框左边的文本内容item_attrUF_STYLER_VALUEitem_id被设置的控件标识value.string显示在输入框中的文本内容ValueLabelBitmap20典型控件—字符串输入框(String)item_attrUF_STYLER_SENSITIVITYitem_id被设置的控件标识value.integerTRUE为控件激活,FALSE为非激活item_attrUF_STYLER_VISIBILITYitem_id被设置的控件标识value.integerTRUE为控件可见,FALSE为不可见item_attrUF_STYLER_FOCUSitem_id被设置的控件标识FocusVisibilitySensitive21典型控件—字符串输入框(String)下面的一段代码实现设置字符串控件可见性的功能:UF_STYLER_item_value_type_tvalue;value.item_attr=UF_STYLER_VISIBILITY;value.item_id=item_id;//控件标识value.value.integer=TURE;//可见UF_STYLER_set_value(dialog_id,&value);UF_STYLER_free_value(&value);22典型控件—字符串输入框(String)下面的一段代码实现获取字符串控件的输入值的功能:UF_STYLER_item_value_type_tvalue;value.item_attr=UF_STYLER_VALUE;value.item_id=item_id;//控件标识UF_STYLER_ask_value(dialog_id,&value);charsNeeded[133];strcpy(sNeeded,value.value.string);UF_STYLER_free_value(&value);23典型控件—按钮控件(PushButton)变量和输入参数属性变量输入参数item_attrUF_STYLER_BITMAPitem_id被设置的控件标识value.string位图文件名,UBM、XPM或BMP文件item_attrUF_STYLER_LABELitem_id被设置的控件标识value.string显示在按钮上的文本内容item_attrUF_STYLER_SENSITIVITYitem_id被设置的控件标识value.integerTRUE为控件激活,FALSE为非激活SensitiveLabelBitmap24典型控件—按钮控件(PushButton)变量和输入参数属性变量输入参数item_attrUF_STYLER_VISIBILITYitem_id被设置的控件标识value.integerTRUE为控件可见,FALSE为不可见item_attrUF_STYLER_FOCUSitem_id被设置的控件标识item_attrUF_STYLER_DEFAULT_ACTIONitem_id被设置的控件标识DefaultActionFocusVisibility25典型控件—按钮控件(PushButton)下面的一段代码实现设置按钮控件的位图显示的功能:UF_STYLER_item_value_type_tvalue;value.item_attr=UF_STYLER_BITMAP;value.item_id=item_id;//控件标识value.value.integer=“E:\\bitmap\PushButton.bmp”;//位图文件的路径UF_STYLER_set_value(dialog_id,&value);UF_STYLER_free_value(&value);26典型控件—按钮控件(PushButton)下面的一段代码实现获取按钮控件激活状态的功能:UF_STYLER_item_value_type_tvalue;value.item_attr=UF_STYLER_SENSITIVE;value.item_id=item_id;//控件标识UF_STYLER_ask_value(dialog_id,&value);if(value.value.integer)…;UF_STYLER_free_value(&value);27©UGSCorp.2007.Allrightsreserved.MenuScript应用28菜单文件及语法VERSION120!------------------------------EDITUG_GATEWAY_MAIN_MENUBARTOP_MENUCASCADE_BUTTONCUSTOM_MYMENULABEL综合实例END_OF_TOP_MENUMENUCUSTOM_MYMENUBUTTONMAKE_SCREWLABEL创建六角头螺栓...BITMAPscrew_ico.bmpACTIONSscrew.dlgEND_OF_MENU29菜单文件及语法关键词描述VERSION菜单脚本的版本号。在系统菜单文件、用户菜单文件,无论是编辑模式,还是创建模式,第一行通常就是版本号说明。CREATE创建模式菜单文件的标志。EDIT编辑模式菜单文件的标志。编辑的对象应该是已经创建好的菜单,在关键词EDIT之后指出所编辑菜单的标识符。用户的菜单文件最好是编辑模式。TITLE菜单栏的标题。在编辑模式菜单文件中,是没有TITLE关键词的。TOP_MENU顶层菜单开始。END_OF_TOP_MENU顶层菜单结束CASCADE_BUTTON层叠菜单项。当它激活时打开一个子菜单。每一个级联按钮的定义,必须用MENU定义相同的菜单名。子菜单可既可在级联按钮前也可要级联菜单后定义。Example:CASCADE_BUTTONUG_FILE_CLOSE30菜单文件及语法MENU非顶层菜单定义开始END_OF_MENU非顶层菜单定义结束MODIFY修改已有的菜单项,而不改变它们的位置END_OF_MODIFY修改结束BUTTON在菜单中添加一个菜单项TOGGLE_BUTTONExample:TOGGLE_BUTTONUG_VIEW_POPUP_ZOOMAPPLICATION_BUTTON应用模块菜单项,单击该菜单项,进入相应的应用模块。Example:APPLICATION_BUTTONUG_APP_MODELINGSEPARATOR在不同菜单项组之间提供一个可见的分隔线LABEL菜单项名称,也就是在交互环境下所看到的菜单项的名称。ACCELERATOR指定菜单命令的快捷键SENSITIVITY指定菜单项是否灰化显示31菜单文件及语法VALUE指定TOGGLE_BUTTON是否被选中ACTIONS菜单的命令,ACTIONS后面可以有:UG系统定义的标准命令、用户定义的回调函数、一个对话框文件名称、一个GRIP应用程序、一个工具栏文件、操作系统的命令以及OpenCandC++Program的程序的名称。MENU_FILES应用模块菜单文件BEFORE在已有的菜单文件中定义的某个菜单项之前加上一个新项。END_OF_BEFORE与BEFORE相对应,其间的内容都是在BEFORE指定的菜单项之前。AFTER在已有的菜单文件中定义的某个菜单项之后加上一个新项。END_OF_AFTER与AFTER相对应,其间的内容都是在AFTER指定的菜单项之后。HIDE隐藏一个菜单文件定义的菜单项。SHOW显示菜单项32菜单文件及语法–示例1VERSION120EDITUG_GATEWAY_MAIN_MENUBARHIDEUG_WINDOWBEFOREUG_HELPCASCADE_BUTTONCUSTOM_MENULABEL主菜单END_OF_BEFOREMENUCUSTOM_MENUTOGGLE_BUTTONT_B_NAMELABELTOGGLE按钮ACCELERATORCtrl+1ACTIONSTOG_BUTTON_ACTION33菜单文件及语法–示例1BUTTONBUTTON_NAME_1LABELGENERAL按钮1ACTIONSnotepadSEPARATORCASCADE_BUTTONSUB_MENULABEL子菜单END_OF_MENUMENUSUB_MENUBUTTONBUTTON_NAME_2LABELGENERAL按钮2ACTIONStest_menu.dlgEND_OF_MENU34菜单文件及语法–示例2VERSION120EDITUG_GATEWAY_MAIN_MENUBAR!HIDEU