折腾了几天,没有进展,在这里向各位大侠请教:

 在C#的MyForm里,定义了静态变量 private static Session theSession; private static UFSession theUfSession; private static UFMb.Action actionTable; Main()函数如下: public static void Main() { theSession = Session.GetSession(); theUfSession = UFSession.GetUFSession(); actionTable.action_cb.cb = new UFMb.CallbackT(SAMPLE_APP__action1); actionTable.action_name = "SAMPLE_APP__action1"; theUfSession.Mb.AddActions(ref actionTable); } 回调函数如下: public static UFMb.CbStatus SAMPLE_APP__action1(IntPtr inp1,IntPtr inp2,ref MbActivatedButton button) { UFMb.CbStatus CbStatus = UFMb.CbStatus.CbContinue; theForm = new MyForm(); theForm.Show(); return CbStatus; } 将MEN文件及DLL放到startup下,启动NX3.0之后,点击菜单按钮,弹出错误对话框:没有登记该按钮上的操作。 通过菜单条报告工具查看信息,对应的菜单按钮: Actions: <actions not registered> 显然没有注册成功。 请高人指点,谢谢!

繁华开满天机
浏览 110回答 2
2回答

守候你守候我

这是我在vc里的成功例子,除了下面的代码,其他没有任何变量声明。实现一个菜单调用一个函数。希望对你有所借鉴。对你的代码没有看的太清除。 static UF_MB_cb_status_t Load_Library( UF_MB_widget_t widget, UF_MB_data_t client_data, UF_MB_activated_button_p_t call_button ) { DisplayDialog(); return( UF_MB_CB_CONTINUE); } static UF_MB_action_t actionTable[]= { {"Load_Library",Load_Library,NULL}, {NULL,NULL,NULL} }; extern void ufsta( char *param, int *returnCode, int rlen )//主函数 { int errorCode = UF_initialize(); if ( 0 == errorCode ) { UF_MB_add_actions(actionTable); errorCode = UF_terminate(); } }

翻过高山走不出你

另外,在VC下,如果actionTable是局部变量而不是静态变量,注册也失败?
打开App,查看更多内容
随时随地看视频慕课网APP