1、 新建一个插件开发目录,如 UGStyler。在该文件夹下新建两个文件夹,分别命名为startup
和 application。
2、 找 到 UG 安 装目录 下 UGII 文 件 夹里 的 ugii_env.dat 文 件 , 其中有 条 语句 :
#UGII_USER_DIR=${HOME}将前面的#号删除,并将${HOME}替换为UGStyler的路径。
如 UGII_USER_DIR= E:\UG\UGStyler。
//定义第一级菜单,它是下拉菜单
//定义该菜单标题
//结束第一级菜单编辑
//编辑第二级菜单,是 MENU_ID_1 的下拉菜单
//定义第二级菜单,它不是下拉菜单,而是按钮
//定义菜单标题
//定义按钮菜单的响应动作,即运行UIStyler对话框(test_UG.dlg)
//结束第二级菜单的编辑
3、 菜单栏开发:新建一个.men 文件,如 test.men,文件语法如下:
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR //编辑 UG 主菜单
BEFORE UG_HELP // 在帮助菜单的前面
CASCADE_BUTTON MENU_ID_1
LABEL PDM
END_OF_BEFORE
MENU MENU_ID_1
BUTTON UG_PDM
LABEL 提取信息
ACTIONS test_UG.dlg
END_OF_MENU
注:UIStyler 对话框的开发将稍后介绍。
4、 工具栏开发:新建一个.tbr 文件,如 test.tbr,文件语法如下:
TITLE PDM 应用
VERSION 170
DOCK TOP
BUTTON UG_PDM
LABEL 提取 UG 信息
BITMAP ug_pdm.bmp
5、 UIStyler 对话框的开发
选择起始——用户界面样式编辑器,如下图所示
//定义工具标题
//在上部工具栏显示
//按钮,对应.men 文件中的按钮名
//定义按钮标题
//对应显示图片
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
可定义对话框的相关属性,包括标题以及选用按钮等。并可为对话框添加整型、字符型输入
框等控件。
点击“回叫”,即可为按钮添加响应事件,如下图所示,输入回叫函数名即可自动生成回叫
函数:
点击保存,会在保存目录下找到三个文件:*****.dlg, *****_template.c, *****.h
6、 生成启动时载入的共享库
在 VC++里新建一个空的 Win32 Dynamic-Link Libray 项目。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
UF_STYLER_item_value_type_t data; // 用以查询控件属性
char fname[256 + 1];
char saveDir[256 + 1];
char* key;
char message[UF_UI_MAX_STRING_LEN + 1];
return ( UF_UI_CB_CONTINUE_DIALOG );
将*****_template.c 文件以及*****.h 文件加入项目中。可在回调函数中添加事件。如下:
int CHANGE_ok_cb ( int dialog_id,
void * client_data,
UF_STYLER_item_value_type_p_t callback_data)
{
tag_t disPart = UF_PART_ask_display_part();
UF_PART_ask_part_name(disPart, fname);
/* Make sure User Function is available. */
if ( UF_initialize() != 0)
/* ---- Enter your callback code here ----- */
data.item_attr = UF_STYLER_VALUE; //定位查询属性类型,即为查询控件的值
data.item_id = CHANGE_STR_0; // 定位查询属性 ID,即为字符串输入栏
UF_STYLER_ask_value(dialog_id, &data); // 获得控件值
key = data.value.string;
if(GetInfor(key,saveDir))
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
//显示提示消息
sprintf(message,"UG 信息提取有误");
sprintf(message,"txt 文件已保存至:\n\n%s",saveDir);
else
uc1601(message,1);
/* Callback acknowledged, terminate dialog */
/* It is STRONGLY recommended that you exit your */
/* callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/
/* return ( UF_UI_CB_EXIT_DIALOG ); */
return ( UF_UI_CB_EXIT_DIALOG );
}
l 找到程序中“#ifdef MENUBAR_COMMENTED_OUT”及其配对的“endif”并删除。
l 找到程序中“#ifdef DISPLAY_FROM_USER_EXIT”及其配对的“endif”并删除。注意不要
UF_terminate ();
删除这两项里面的程序。
l 在将刚才“#ifdef DISPLAY_FROM_USER_EXIT”下的语句中的“”改为 ufusr。
在该项目中,也可调用功能扩展程序文件(如:extern.dll)调用方式同其他。
编译项目生成*****.dll 文件。
7、 将.men 文件、.tbr 文件、*****.dll 文件(其中有 ufsta()函数作为入口)、extern.dll(功能
扩展程序文件)放在 startup 文件夹下。
将*****.dlg 文件,图片文件(如 pdm.bmp)放在 application 文件夹下。
插件开发完毕。打开 UG,便会有新加的菜单和工具。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn