在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1213|回复: 9

[求助] deRegUserTriggers()函数问题

[复制链接]
发表于 2023-7-21 09:18:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在eetop上找了这个函数的用法,也对着finder教程看了,确定格式没有问题,但是无法自动加载自己的menu进win里,CIW报错  function is not callable ,请教大神这是什么原因导致的?
发表于 2023-7-21 09:39:53 | 显示全部楼层
你把你的代码发一下就知道了,就怕你陷入思维误区,所确认的对本来就是有问题的
发表于 2023-7-21 10:11:12 | 显示全部楼层
这个函数干嘛用的?
 楼主| 发表于 2023-7-21 13:59:01 | 显示全部楼层


着着着火了 发表于 2023-7-21 09:39
你把你的代码发一下就知道了,就怕你陷入思维误区,所确认的对本来就是有问题的 ...


代码我是跟着eetop上的教程学的,类似如下:
procedure(Mymenu()
let(()
win=geCurrentWindow()
item1=hiCreateMenuItem(?name 'item1 ?itemText "A1" ?callback "...")
pdmenu2=hiCreatePulldownMenu(...)
slmenu=hiCreateSliderMenuItem(...)
hiInsertBannerMenu(...)
))
deRegUserTriggers("maskLayout" nil nil 'MyMenu)
因为是直接抄的教程上的,而且打开窗口后是可以手动加载的,所以我猜测是最后的这个出了问题,但是不知道是系统问题还是使用问题。
发表于 2023-7-21 15:41:14 | 显示全部楼层


jixialei 发表于 2023-7-21 13:59
代码我是跟着eetop上的教程学的,类似如下:
procedure(Mymenu()
let(()


deRegUserTriggers("maskLayout" nil nil 'MyMenu)意味着你每次打开"maskLayout"这种类型的view都会触发,然后传送参数给MyMenu()这个function,但是你的MyMenu()不接收任何参数,自己干自己的,程序也不知道你要把bannerMenu插入到哪个window。

在hiInsertBannerMenu()那里改一下,单独做一个procedure来接收参数,例如下面这样:
procedure(displayMenuBar(args)
    hiInsertBannerMenu(args->window Mymenu() length(hiGetBannerMenus(args->window)
);end procedure

deRegUserTriggers("maskLayout" nil nil 'displayMenuBar)
发表于 2023-7-21 15:50:31 | 显示全部楼层
本帖最后由 着着着火了 于 2023-7-21 16:30 编辑


着着着火了 发表于 2023-7-21 15:41
deRegUserTriggers("maskLayout" nil nil 'MyMenu)意味着你每次打开"maskLayout"这种类型的view都会触发 ...


你所说的手动加载能成功是因为在Mymenu()代码里手动加了一个win=getCurrentWindow(),这就意味着你只有打开了这个窗口然后手动加载一遍才能把win这个变量附上值,然后你后面的代码里的win才能生效



因为你提供的代码不完整,以上纯属猜测,如有错误,当我没说
 楼主| 发表于 2023-7-21 17:37:54 | 显示全部楼层


着着着火了 发表于 2023-7-21 15:41
deRegUserTriggers("maskLayout" nil nil 'MyMenu)意味着你每次打开"maskLayout"这种类型的view都会触发 ...


非常感谢,通过您的指点,可以做到打开窗口自动加载脚本了,这边说一下一点注意事项给后来者吧:

1.您给的句式中有部分尾括号缺少,后来者需要注意
2.经过我的调试,发现MyMenu()不能直接这么用,需要变成MyMenu(args),相应的函数本身也需要加上该自变量,我还没有理清其中的逻辑,大概是有什么反馈操作?
发表于 2023-7-21 18:14:24 | 显示全部楼层


jixialei 发表于 2023-7-21 17:37
非常感谢,通过您的指点,可以做到打开窗口自动加载脚本了,这边说一下一点注意事项给后来者吧:

1.您给 ...


在MyMune()这个函数里你只放结构性的东西(包括获取window之类的也不需要),然后触发函数就用我写的那个,这样你的MyMune()里就不需要参数了,让displayMenuBar()这个函数专门负责获取参数和插入MuneBar,后续要添加MenuItem只需要修改MyMune()里的东西,其它都不用动,分工明确
发表于 2024-3-27 18:29:25 | 显示全部楼层


着着着火了 发表于 2023-7-21 15:41
deRegUserTriggers("maskLayout" nil nil 'MyMenu)意味着你每次打开"maskLayout"这种类型的view都会触发 ...


大佬,能不能解是下,args->window 啊?
发表于 2024-3-28 09:49:12 | 显示全部楼层


终章0000 发表于 2024-3-27 18:29
大佬,能不能解是下,args->window 啊?


从deRegUserTriggers("maskLayout" nil nil 'displayMenuBar)可知:每当打开一个maskLayout类型的cellView时就会触发displayMenuBar(args)函数并且传递一个参数,这个参数具体是什么你可以自己研究下,至于args->window这样写是hiInsertBannerMenu()的参数需求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 00:33 , Processed in 0.023592 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表