proe5.0环境下vs2008二次开发(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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行:为空(用#表示,必须在英文输入法下输入)