递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 7566|回复: 22
打印 上一主题 下一主题

[视窗] 求一个非静态方法的类方法回调的方法

[复制链接]

25

主题

488

帖子

1737

积分

金牌会员

Rank: 6Rank: 6

积分
1737
跳转到指定楼层
楼主
发表于 2021-7-16 09:24:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qaz2428119 于 2021-7-16 10:05 编辑

就如标题一样,现在很多的类方法回调,都是使用的静态或全局类方法,难道火山自身就不支持非静态或全局方法的类方法回调吗?
就比如我要子类化一个窗口,就必须使用静态方法,如果我这个类是一个功能类,难道所以的类实例都要公用这一个静态类回调吗?
公用一个类回调其实没问题,有问题的是没法在静态方法回调中区分类实例的对象
总不能啥事都交给嵌入方法实现把
要是这样岂不成了 嵌入方法不是万能的,可没有嵌入方法是万万不能的最好是 直接一些,不要用什么实例数组或指针数组
强烈要求官方能尽快解决这个问题,

回复

使用道具 举报

439

主题

1万

帖子

3万

积分

超级版主

Rank: 8Rank: 8

积分
37440
沙发
发表于 2021-7-16 10:33:45 | 只看该作者
第一:没有一个具体的例子,没有明白你在描述什么。

第二:如果你是想问,静态方法能够调用当前类中的非静态。。这个可以实现的。
http://bbs.voldp.com/forum.php?mod=viewthread&tid=8011

参考这个启动线程的例子。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

25

主题

488

帖子

1737

积分

金牌会员

Rank: 6Rank: 6

积分
1737
板凳
 楼主| 发表于 2021-7-16 13:22:36 | 只看该作者
创世魂 发表于 2021-7-16 10:33
第一:没有一个具体的例子,没有明白你在描述什么。

第二:如果你是想问,静态方法能够调用当前类中的非静 ...

静态回调 如果不能传递类实例指针是无法为每个类实例单独回调数据,线程那个是因为启动线程的函数自带一个自定义参数,只需传递有一个类指针,就可以调用类的所有方法或成员,
可有些API函数的回调,并不支持传递一个自定义参数 这个怎么办?
回复

使用道具 举报

47

主题

884

帖子

4044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4044
地板
发表于 2021-7-16 14:18:28 | 只看该作者
本帖最后由 67564226 于 2021-7-16 14:21 编辑
qaz2428119 发表于 2021-7-16 13:22
静态回调 如果不能传递类实例指针是无法为每个类实例单独回调数据,线程那个是因为启动线程的函数自带一个 ...

这个问题我在易里面用过。

比如多参的   用  A|B|C|D|E|......

先按上面的方法把他们处理好。  然后 把这个弄好的,赋值给一个变量, 再取变量地址,就得到一个整数指针 就可以用这个整数传递了,
接收到这个地址方,只要再把这个指针到文本()之类的方法处理一下,还原回来就可以了。

要注意的是这个变量,最好使用程序集或全局。  用局部变量估计会给 当成垃圾回收的可能, 我没试过能不能传递数组指针,如果能传递数组指针那就更省事了。

回复

使用道具 举报

17

主题

793

帖子

2639

积分

金牌会员

Rank: 6Rank: 6

积分
2639
5#
发表于 2021-7-16 14:42:42 | 只看该作者
学习来...
回复

使用道具 举报

25

主题

488

帖子

1737

积分

金牌会员

Rank: 6Rank: 6

积分
1737
6#
 楼主| 发表于 2021-7-20 15:09:39 | 只看该作者
67564226 发表于 2021-7-16 14:18
这个问题我在易里面用过。

比如多参的   用  A|B|C|D|E|......

很多的API函数需要的回调都不支持自定义参数,说那些有毛用而且这和多参没有任何关系
回复

使用道具 举报

4

主题

38

帖子

572

积分

高级会员

Rank: 4

积分
572
7#
发表于 2021-7-20 18:30:00 | 只看该作者
哪些API回调函数不能传递参数. 一般都可以传递的
回复

使用道具 举报

25

主题

488

帖子

1737

积分

金牌会员

Rank: 6Rank: 6

积分
1737
8#
 楼主| 发表于 2021-7-21 16:11:23 | 只看该作者
kyozy 发表于 2021-7-20 18:30
哪些API回调函数不能传递参数. 一般都可以传递的

大多数都不能传递自定义参数,还一般都能
就比如 子类化窗口过程,就不能传递自定义参数
回复

使用道具 举报

4

主题

38

帖子

572

积分

高级会员

Rank: 4

积分
572
9#
发表于 2021-7-22 09:07:52 | 只看该作者
本帖最后由 kyozy 于 2021-7-22 09:10 编辑

子类化也可以想办法通过窗口句柄传递参数的, 还有什么不能传递参数的例子来看看.关键是传递this参数是不可能避免的, 就算你遇见不需要传递 this 的模块, 都是内部帮你传递好了的.
回复

使用道具 举报

4

主题

38

帖子

572

积分

高级会员

Rank: 4

积分
572
10#
发表于 2021-7-23 16:55:29 | 只看该作者
qaz2428119 发表于 2021-7-21 16:11
大多数都不能传递自定义参数,还一般都能
就比如 子类化窗口过程,就不能传递自定义参数 ...

子类化可以通过窗口句柄传递, 你再说说还有哪些不能传递参数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-27 05:36 , Processed in 0.088101 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表