一、新建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文件
六、效果