回复:vbs如何自定义函数使用系统item、x、y参数

已锁定

Zaxife

  • 帖子

    2450
  • 精华

    31
  • 被关注

    78

论坛等级:至圣

注册时间:2008-07-24

普通 普通 如何晋级?

发布于 2020-08-30 18:21:38

9楼

展开查看
以下是引用sunwicle在2020-08-30 15:52:40的发言 >7楼

如果使用事件里自带的sub函数,可以方便利用X,y自定义鼠标热点问题,但是一个项目有N个按钮需要用到,我不能一个一个去复制粘贴吧,修改也麻烦,所以我打算做个全局自定义脚本,方便调用,但是全局自定义脚本不支持sub事件函数x,y的返回,所以怎么才能实现全局里使用x,y?还有C语言在事件里也是预设好的x,y,所以同样在全局里不能使用,而在对象事件里可以使用。


函数不能嵌套,但能调用,调用函数怎么能使用父级函数的返回值,比如使用父级的item,x,y?本身item、x、y应该是private吧?这也不是属性啊?

测试了下C语言,我想用C做自定义一个鼠标热点问题,wincc7.4可以使用API的鼠标函数,但TIA wincc怎么不行?TIA支持API函数吗?

以下是引用Zaxife在2020-08-30 09:58:26的发言 >6楼:擦,这个是对象事件...

引用6楼详细内容:

擦,这个是对象事件函数,并不是方法函数。不能像你这样用的吧?

三个返回值,item、x、y

item是指当前对象,你可以用item.xxx访问当前对象的开放属性,x、y 是当前鼠标x、y坐标。

比如当前是个IO域,你想实现每点击一次当前值+1?那就直接item.outputvalue = item.outputvalue + 1,而不需要IO域绑定到一个内存变量,然后用screnmitem来操作。

至于x、y值,你调用的话随便输入一个值就可以了,因为不会造成什么问题。


你想调用事件函数?这样搞涉及到多线程层面极其容易导致程序逻辑错误死机的(这种事件函数一般都是软件底层回调函数),所以为了安全很多程序员都不会开放事件函数给用户执行的。你只能自己写一个全局函数,然后在对象的事件函数里面调用函数不就实现了你想要的?


编程一开始就很麻烦的啊,要一个一个轮子的造,不厌其烦的造不同的轮子。造好轮子的,以后就不用经常造轮子而是用轮子造大楼了。所以,一开始不能怕麻烦啊。

最后,C语言编程也是从函数开始的啊。不同功能用不同函数,不同函数嵌套组合成一个健壮的程序。

难道你的C程序就只有一个main函数?那你这就不叫程序而是开玩笑了。


呃,我都说了Sub OnPressLeft(ByVal item, ByVal flags, ByVal x, ByVal y)是事件函数,类似回调函数。

item、x、y是软件底层返回给用户使用的。回调函数是用给用户执行一些事件相关操作的,不是给用户调用的。你全局函数里面用鼠标坐标干啥?全局函数是独立的线程原则上是不允许访问UI线程的item的。软件底层的返回鼠标x、y是为了方便用户点击item时,在鼠标位置弹出msgbox或者把其他item移到鼠标位置...如果想知道更多的信息,就去找软件工程师问工程师要函数原型。至于item、x、y这三个变量,回调函数的肯定是private的,写软件的人怎么可能随随便便就允许你乱修改item里面的内部变量。

也许,你理解错全局函数的全局的意思了。全局函数你可以理解为一个线程,而不要理解为全局变量的全局字面意思。

还有,线程有返回函数?有参数这种说法?就像中断,你怎么给中断加返回值?怎么给中断加参数?人家软件函数已经定死了,你想摆脱这种做法你只能自己开发软件咯。

还有,触摸屏的是win ce嵌入式系统、wincc v7是windows 7桌面系统。触摸屏对很多win7桌面系统的API是不支持的。具体的你可以去学习windows ce嵌入式编程。


最后,真不知道你想干啥。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。