一、新建MFC DLL工程
二、配置项目属性
附加依赖项中输入:netapi32.lib;psapi.lib;mpr.lib;wsock32.lib;protk_dll_NU.lib;protk_dllmd_NU.lib;protkmd_NU.lib;protoolkit_NU.lib;pt_asynchronous.lib;ptasyncmd.lib;ucore.lib;udata.lib;
尝试编译工程,如果编译失败,检查上面的配置项是否都正确,编译成功,会生成对应dll,打开dll所在的路径,进行下面的菜单创建。
三、添加菜单文件
工程路径下新建CreoDLL.dat文件,其内容如下:
NAME CreoDLL
STARTUP dll
EXEC_FILE E:\Code\CreoDLL\x64\Release\CreoDLL.dll
TEXT_DIR E:\Code\CreoDLL\x64\Release\text
ALLOW_STOP TRUE
REVISION 1.0
END
在dll同级目录,新建text文件夹,并在里面添加menu.txt(命名自定义),保存的格式为ANSI,否则显示中文菜单为乱码。如下图
menu.txt的内容如下:
四、添加代码
在CreoDLL.cpp中添加头文件
#include <ProMenuBar.h>
#include <ProUtil.h>
并添加下列代码,编译工程
//动作1函数 void btn1Action() { return; } uiCmdAccessState access_func(uiCmdAccessMode access_mode) { return ACCESS_AVAILABLE; } // 函数入口,Creo与Visual Studio的接口 extern "C" int user_initialize() { ProError status; ProFileName MsgFile; ProStringToWstring(MsgFile, "menu.txt"); //声明按钮 uiCmdCmdId btn1; //添加菜单 status = ProMenubarMenuAdd("Menu1", "Menu1_Label", NULL, PRO_B_TRUE, MsgFile);//菜单标签名(第二个参数)与menu.txt的菜单标签名对应 //添加动作 status = ProCmdActionAdd("rewrite_button_action", (uiCmdCmdActFn)btn1Action, uiProeImmediate, access_func, PRO_B_TRUE, PRO_B_TRUE, &btn1); //添加按钮 status = ProMenubarmenuPushbuttonAdd("Menu1", "btn1Name", "Button_Label", "Button_Label", NULL, PRO_B_TRUE, btn1, MsgFile);//按钮标签名(第三个参数)和帮助名(第四个参数)都要与menu.txt的按钮标签名一致 return status; } extern "C" void user_terminate() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); }
五、Creo中添加dat文件
六、效果