iCAx开思网
标题:
UG二次开发,菜单操作注册无效?
[打印本页]
作者:
zhangdino
时间:
2005-1-9 19:57
标题:
UG二次开发,菜单操作注册无效?
折腾了几天,没有进展,在这里向各位大侠请教:
在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>
显然没有注册成功。
请高人指点,谢谢!
作者:
zhangdino
时间:
2005-1-11 08:35
另外,在VC下,如果actionTable是局部变量而不是静态变量,注册也失败?
作者:
zhangdino
时间:
2005-1-20 13:42
各位老大,伸手救救我吧!
作者:
zhouym71
时间:
2005-1-20 17:21
你是做内部开发还是外部开发?
作者:
zhangdino
时间:
2005-1-20 19:07
你好,我是作内部开发,恳请指点,谢谢!
作者:
zhouym71
时间:
2005-1-20 20:55
你的DLL的体系结构有点问题
作者:
zhouym71
时间:
2005-1-20 20:56
最好用UF的菜单入口函数ufsta来实现菜单操作注册
作者:
zhangdino
时间:
2005-1-23 11:55
你说的很有道理,好像就是没有执行到似的,但C#下动态库的入口可以用Main()函数的。
按你的建议,我用ufsta,仍然是不行,真是没有办法。。。。。。
作者:
zhebin
时间:
2005-1-24 20:45
这是我在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();
}
}
作者:
zzz
时间:
2005-1-24 22:05
新的开发环境不懂,不过Ug里面带的例子吧。
作者:
zhangdino
时间:
2005-1-25 08:42
谢谢zhebin
你的例子是成功的!
不过,如果将ufsta改动一下,从编程的角度理解应该是可以完成同样功能的,但结果却是失败,不知是何故?
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);
}
extern void ufsta( char *param, int *returnCode, int rlen )//主函数
{
int errorCode = UF_initialize();
if ( 0 == errorCode )
{
UF_MB_action_t actionTable;//变为局部变量
actionTable.action_cb.cb=Load_Library;
actionTable.action_name="Load_Library";
UF_MB_add_actions([$actionTable)]
errorCode = UF_terminate();
}
}
谢谢zzz版主,UG里面的VC#的例子也有一些,但很失望,没有这方面的例子
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3