框架下的无缝集成。
下面首先介绍几个用户界面接口中专用的概念。
(1)UG/Open Dialogs:通过UG/Open API提供的函数生成的对话框。 (2)UIStyler Dialogs:开发者使用UIStyler工具创建的对话框。
(3)Custom Dialogs:开发者使用Motif创建的Xwindow环境下的对话框。 (4)Presentation APIs:上述三类对话框的通称。
(5)Callback:当交互事件(如单击鼠标和按键盘的回车键等)发生时,Unigraphics的响应是自动执行由用户编写的C语言子过程,该子过程就是Callback。
(6)Motif:Xwindow平台上能够创建用户化界面商业化工具包,要求有X ToolKit支持。 (7)State Change Callback:当Unigraphics用户界面的状态改变时系统会自动调用的回调函数,开发者可以在回调函数中插入自己的内容。
(8)X ToolKit Callback:当用户选择对话框的选项(按钮或单选按钮)时系统会自动调用的回调函数。
(9)Concurrent Cooperative Access with Unigraphics:应用与Unigraphics的集成模式,用户的应用与Unigraphics处于同步状态。当开发者开发的回调函数运行交互的UG/Open API应用时,Unigraphics的功能被屏蔽。类似地,当Unigraphics显示二级对话区(Dialog Area 2缩写为DA2)时,用户应用的功能被屏蔽。这种同步行为使应用与Unigraphics无缝集成。
User Function定义了许多标准对话框,可以与用户进行交互输入及选择等操作。这些UF函数的声明主要包含在头文件uf_ui.h中。大量使用标准对话框可以减少开发的工作量,也有利于保持一致的对话框风格。由于UF函数并没有提供所有常用对话框,在开发过程中可能需要使用到MFC标准对话框。选用标准对话框的原则是尽量采用UG NX 5.0标准对话框,如果UF未提供则采用MFC标准对话框,如果UF与MFC都未提供则使用UIStyler工具创建用户自定义对话框。下面介绍一些常用的标准对话框函数。
22.2.1 消息对话框
本节介绍函数uc1601。在操作过程中,开发者常常需要通过消息对话框来告知用户一些消息,必要情况下还需要与用户进行交互。一般比较常用的是模态消息对话框。
模态消息对话框分为单按钮消息对话框和多按钮消息对话框两种形式。 1.单按钮消息对话框
单按钮消息对话框常用于输出错误信息或提醒用户注意事项。操作时,用户单击唯一的串最多不得超过132个字符。 【例22-4】 创建单按钮消息对话框。 操作步骤如下。 把下面的代码添加到例22-1中黑体字代码所在的位置。 char ShowMessage[130+1]=\显示消息?1(ShowMessage,1); 按第22钮即可退出对话框。对话框用函数uc1601创建,需要注意的是消息在信息窗口或状态行显示的信息章 UG NX 5.0按快捷键F7,编译Example工程,出现编译成功的信息。 二次开发基础 487 一 册 通 UG NX 5.0
启动UG NX 5.0软件,选择【文件】|【执行】|【NX打开…】命令,弹出【执行用
户函数】对话框,如图22-15所示。
图22-15 【执行用户函数】对话框
选择生成的动态库文件“Example.dll”,单击
按钮,弹出如图22-16所示的界面。
图22-16 执行“Example.dll”文件生成的单按钮消息对话框
2.多按钮消息对话框
多按钮消息对话框提供了多个按钮(最多三个)供用户选择,程序可以根据用户的不同选择实现不同的分支功能。该对话框由函数UF_message_dialog创建,开发者可以通过定义函数参数控制按钮的数量和对话框的类型。多按钮消息对话框提供了4种对话框类型,即错误型、警告型、消息型和询问型。同样,消息在信息窗口或状态行显示的信息串最多不得超过132个字符。 【例22-5】 创建多按钮消息对话框。
操作步骤如下。
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工
488
程,弹出编译成功的信息。
int res=0;
char title[]=\
char sMessages[132+1]=\显示消息\char *p=sMessages;
UF_UI_MESSAGE_DIALOG_TYPE dialog_type=UF_UI_ MESSAGE_ INFORMATION; UF_UI_message_buttons_s button; button.button1=true; button.button2=true; button.button3=true; button.label1=\button.label2=\
button.label3=\button.response1=1; button.response2=2; button.response3=3;
UF_UI_message_dialog(title,dialog_type,&p,1,0,&button,&res); switch(res) {
case 1:uc1601(button.label1,1); break;
case 2:uc1601(button.label2,1); break;
case 3:uc1601(button.label3,1); break;
default:uc1601(\未知按钮\ break; }
启动UG NX 5.0软件,选择【文件】|【执行】|【UX打开…】命令,弹出【执行用
户函数】对话框,如图22-17所示。
第22章 UG NX 5.0
图22-17 【执行用户函数】对话框
二次开发基础 489
一 册 通 UG NX 5.0
选择生成的动态库文件“Example.dll”,单击
钮消息对话框。
按钮,弹出如图22-18所示的多按
图22-18 执行“Example.dll”文件生成的多按钮消息对话框
22.2.2 文件及文件夹操作对话框
文件及文件夹操作对话框包含4种常用的标准对话框,分别介绍如下。 1.创建新部件对话框
通过调用UF_UI_create_part()显示创建新部件文件对话框,然后新建一个部件文件并设置为工作部件。它实现的功能与UG NX 5.0的New File命令功能相同,属于模态对话框。
2.打开已有部件对话框
通过调用UF_UI_open_part ()打开一个部件并设置为工作部件。它实现的功能与UG NX 5.0的Open File命令功能相同,属于模态对话框。
3.文件选择对话框
通过调用UF_UI_create_filebox(),其实现的功能与Windows风格的Open File功能相同。该对话框可以用于选择各种类型的文件,而前两种对话框只能针对部件文件(后缀名为.prt)进行操作。它属于模态对话框。
4.文件夹选择对话框
该对话框通过函数SHBrowseForFolder()调用,用于选择文件夹并返回该文件夹的全路径。它属于非模态对话框。
【例22-6】 创建文件夹选择对话框。
操作步骤如下。
把下面的代码添加到例22-1中黑体字代码所在的位置,按快捷键F7,编译Example工程,出现编译成功的信息。
490
char sFilePath[255+1]=\LPMALLOC pMalloc=NULL; LPITEMIDLIST pidl=NULL; BROWSEINFO ob;
ZeroMemory(&ob,sizeof(BROWSEINFO)); ob.hwndOwner=NULL;
ob.lpszTitle=_T(\请选择文件夹:\ob.ulFlags=BIF_RETURNONLYFSDIRS; pidl=SHBrowseForFolder(&ob); if(pidl!=NULL) { SHGetPathFromIDList(pidl,sFilePath); if(SUCCEEDED(SHGetMalloc(&pMalloc))&&pMalloc) pMalloc->Free(pidl); pMalloc->Release(); }
启动UG NX 5.0软件,选择【文件】|【执行】|【NX打开…】命令,弹出如图22-17
所示的对话框。选择生成的动态库文件“Example.dll”,单击 按钮,弹出如图22-19所示的文件夹选择对话框。
图22-19 执行“Example.dll”文件生成的文件夹选择对话框
在调试上面的程序时应加入下面的头文件: #include
UG/Open API的选择菜单对话框有两种,即单选菜单列表对话框和多选菜单列表对话框,分别通过子过程uc1603和uc1605实现,下面将具体介绍。
uc1603用于显示一个选择菜单对话框,该菜单可以包含14个菜单选项,并可以通过变量参数设定默认的选择项。若变量参数为0,则不设定默认选项,同时【确定】按钮变灰。菜单选项的返回
二次开发基础 491