UG NX 二次开发 技术交流 qq群:641226372
函数结构:
ufusr_ask_unload
函数说明:
用户提供的例程指定一个内部开放的API如何共享图像退出时的处理方式。此功能使您能够卸载的能力内部开放的API或NX用户出口。您可以指定三个常数中的任何一个作为返回值来确定卸载的类型执行:后立即打开API执行,通过卸载选择对话框,或当NX终止。如果你选择UF_UNLOAD_SEL_DIALOG,那么你必须卸载选项公用事业 - - 卸载共享图像通过选择File你的形象。请注意以下限制:它采用UF_UI_append_menubar_menu程序不应该使用该选项卸载一个开放的API图像。此外,如果你的代码定义UF_UI_append_menubar_menu本身加载共享库,该代码不应试图卸载图书馆。 NX总是让人强烈企图阻止卸其通过使用UF_UI_append_menubar_menu编码的库。包含为注册功能,如任何的一个共享库用户定义的对象注册方法,不应该卸载。 NX必须保持加载访问库注册的函数地址。立即卸载和通过对话卸不应如果使用程序已注册任何形式的回调。此外,您必须编码清理程序的选项ufusr_cleanup来执行可能需要的任何看家琐事被执行。如果你的代码的清理程序,它会自动为通过NX调用。
ufusr_ask_unload函数实例代码演示:
[quote]#include
#include
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
if (irc)
{
char messg[133];
printf("%s, line %d: %s\n", file, line, call);
(UF_get_fail_message(irc, messg)) ?
printf(" returned a %d\n", irc) :
printf(" returned error %d: %s\n", irc, messg);
}
return(irc);
}
static void do_ugopen_api(void)
{
char *ptr;
UF_CALL(UF_set_variable("UGII_NEW_VARIABLE", "value"));
UF_CALL(UF_translate_variable("UGII_NEW_VARIABLE", &ptr));
printf("value of UGII_NEW_VARIABLE is : %s\n", ptr);
}
void ufusr(char *param, int *retcode, int paramLen)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
void ufusr_cleanup(void)
{
/* Perform cleanup *
}
[/quote]