PRO/E 5.0环境下使用vs2008进行二次开发
1、环境设置(只需第一次设置)
1)进入工具/选项对话框,包含文件:○1./prodevelop/include; ○2./protoolkit/include
2)库文件:○1./protoolkit/i486_nt/obj; ○2./prodevelop/i486_nt/obj
2、新建MFC DLL工程(采用默认动态链接烈类型)
3、设置项目属性
1)进入项目/属性对话框(ALT+F7),选择配置管理器,将Active版本类型改为Release。
2)选择配置属性/链接器/输入,在附加依赖项一栏输入:
wsock32.lib mpr.lib protk_dll.lib prodev_dll.lib psapi.lib netapi32.lib
3)在忽略特定库一项输入mvcrt.lib
1)添加头文件
#include"ProMenu.h"
#include"ProUtil.h"
#include"ProMenubar.h"
2)添加初始化函数
extern"C"int user_initialize() {
ProError status;
// 用户接口程序
return status;
}
extern"C"void user_terminate() {
// 结束代码
}
// 定义菜单的可访问性设置函数
static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {
return(ACCESS_AVAILABLE);
}
int MsgBox() // 定义菜单按钮相应函数
{
AfxMessageBox(_T("My first Pro/E redeveloping"));
return 0;
}
extern"C"int user_initialize()
{
ProError status;
uiCmdCmdId cmd_idl;
ProFileName mfName;
ProStringToWstring(mfName, "Msg.txt");
// 添加菜单
status = ProMenubarMenuAdd("CHECK", "CHECK", "Utilities",
PRO_B_TRUE, mfName);
// 添加菜单动作
status = ProCmdActionAdd("ShowTest1", (uiCmdCmdActFn)MsgBox,
uiCmdPrioDefault,UserAccessDefault,
PRO_B_TRUE, PRO_B_TRUE, &cmd_idl);
// 添加菜单按钮
status = ProMenubarmenuPushbuttonAdd("CHECK", "MSGBOX", "PathMsg",
NULL, NULL,
PRO_B_TRUE, cmd_idl, mfName);
return status;
}
4)关键函数
wchar_t* ProStringToWstring ( wchar_t*wstr, char*str );
// 把char*类型转换为wchar_t*
ProError ProMenubarMenuAdd (
ProMenuItemName menu_name,
ProMenuItemLabel untranslated_menu_label,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
ProFileName filename )
ProError ProCmdActionAdd (
char *action_name,
uiCmdCmdActFn action_cb,
uiCmdPriority priority,
uiCmdAccessFn access_func,
// 是否在非激活窗口显示
ProBoolean allow_in_non_active_window,
//是否在附属窗口显示
ProBoolean allow_in_accessory_window,
uiCmdCmdId *action_id );
ProError ProMenubarmenuPushbuttonAdd (
ProMenuItemName parent_menu,
ProMenuItemName push_button_name,
ProMenuItemLabel push_button_label,
ProMenuLineHelp one_line_help,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
uiCmdCmdId action_id,
ProFileName filename );
static uiCmdAccessState UserAccessDefault(uiCmdAccessMode access_mode) {
return(ACCESS_AVAILABLE);
// ACCESS_REMOVE 移除菜单项
// ACCESS_INVISIBLE 不可见
// ACCESS_UNAVALIABLE 可见,变灰不可选
// ACCESS_DISALLOW 不可选
// ACCESS_AVAILABLE 可选
}
5)编写信息文件
格式第1行:关键字(必须与使用该信息文件函数的相关字符串相同)
第2行:菜单显示英文文本
第3行:中文文本
第4行:为空(用#表示,必须在英文输入法下输入)
6)编写注册文件
格式:
NAME 应用程序标识名
EXEC_FILE 可执行程序名(包括路径)
TEXT_DIR Text目录路径
STARTUP 启动应用模式
ALLOW_UP 是否允许在PROE工作时终止应用程序DELAY_START 是否延迟调用应用程序
REVISION Pro/TOOLKIT版本号
END 结束标志
(每次修改后请重启PROE)