iCAx开思网

标题: 【求助】ufsta与ufusr的区别?ufsta的用处? [打印本页]

作者: 云淡风清    时间: 2004-2-25 17:48
标题: 【求助】ufsta与ufusr的区别?ufsta的用处?
我的理解是:
ufusr为入口函数,是需要用户手工调用才执行,File-->Execute UG/OPEN-->User Function;
ufsta为入口函数,则是在UG启动的时候就自动执行用户定义的dll程序;
  
但我不明白的是,UG启动的时候怎么可能自动去寻找用户自定义的dll文件?
我对ufsta的理解是不是错误的?
如果真的可以实现用户自定义dll文件随UG一起启动,是不是需要设置例如搜索路径一样的东西?
  
向大家指教!
谢谢!
作者: zzz    时间: 2004-2-25 22:22
你的理解是对的,为了让UG自动调用,一般都是定义一个环境变量
UGII_USER_DIR, 指向一个路径,并在该目录建立两个子目录startup和application,只要把dll放在startup下,UG就会自动找到。
作者: Tyrael    时间: 2004-2-26 10:35
是不是所有放在startup下的dll都被自动调用,即使是用的ufusr入口函数?
作者: zzz    时间: 2004-2-26 20:51
不是,放在startup下,只能确保UG启动时,能够搜索到这些dll,但UG只会执行ufsta中的东西,没有ufsta函数的话,那就什么也不会运行,因为UG对每个exit函数都是有严格定义的,ufsta就是UG一启动运行的,ufusr就是通过菜单运行的,还有其它如点击save时运行的,点击new时运行的,等等。
不管是什么程序,什么入口函数,都应放在正确的位置,让UG在需要时能够找到。至于dll是不是被自动加载,我还不敢确定。
作者: 云淡风清    时间: 2004-2-27 08:28
明白了,谢谢版主:)
作者: Tyrael    时间: 2004-2-27 10:15
zzz wrote:
不是,放在startup下,只能确保UG启动时,能够搜索到这些dll,但UG只会执行ufsta中的东西,没有ufsta函数的话,那就什么也不会运行,因为UG对每个exit函数都是有严格定义的,ufsta就是UG一启动运行的,ufusr就是通过菜单运行的,还有其它如点击save时运行的,点击new时运行的,等等。  
  不管是什么程序,什么入口函数,都应放在正确的位置,让UG在需要时能够找到。至于dll是不是被自动加载,我还不敢确定。

也就是说,如果是用菜单调用一个dll的话,那么这个dll一定是用的ufusr函数,并且一定要放在application目录下,对吗?
另外我试了一下,ug运行时,startup下的dll都不能修改
作者: zzz    时间: 2004-2-27 10:31
Tyrael wrote:
   
  也就是说,如果是用菜单调用一个dll的话,那么这个dll一定是用的ufusr函数,并且一定要放在application目录下,对吗?  
  另外我试了一下,ug运行时,startup下的dll都不能修改

  
那就是startup下所有的dll都会自动加载,但是因为dll中没有ufsta,所以什么也不执行。
作者: mbdwt    时间: 2004-2-28 08:35
用菜单调用一个dll时,是把dll放在application目录下还是startup目录下要依据这个菜单的创建方式不同而区别。
1.这个菜单是用菜单脚本创建的,那么直接在ACTIONS后加上要调用的dll,此时dll放在application目录下。
2.这个菜单是用MenuScript函数(UF—MB—add—actions等)创建的,则在ufsta()子程序中包含UF—MB—add—actions函数的dll应放在startup目录下,这种情况用于这个dll是用于扩展UG的Gateway功能的(即UG一启动菜单就在主界面的菜单条上显示)时候;当dll是用于扩展UG的应用模块功能时候,dll放在application目录下(带有 menuflie语句的菜单文件要放在startup目录下)。
作者: ccc    时间: 2004-3-19 21:59
那能不能卸载dll呢,要不然在调试的时候,总是要退出ug再替换原先的dll才可以,好繁哦
作者: xskun    时间: 2004-3-20 10:55
我使用ufusr为入口函数生成的dll放在application下,
可以File-->Execute UG/OPEN-->User Function执行,也可以点击菜单执行。
在这种入口函数下,再次调试程序,可以不关闭上次启动的ug,但是他会再次启动一个ug窗口!
但是在使用ufsta入口函数时,再次调试程序,必须关闭上次启动的ug,才可以链接成功。
作者: ccc    时间: 2004-3-20 14:42
我在办公室2000系统就不可以随便替换,在宿舍里的xp就可以。当然是在菜单调用ufsta的时候
作者: 云淡风清    时间: 2004-3-21 15:55
给个退出方式的函数就可以了
ufusr_ask_unload ( )
{
   return(UF_UNLOAD_IMMEDIATELY);
}




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3