qaz2428119 发表于 2021-7-16 09:24:23

求一个非静态方法的类方法回调的方法

本帖最后由 qaz2428119 于 2021-7-16 10:05 编辑

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

创世魂 发表于 2021-7-16 10:33:45

第一:没有一个具体的例子,没有明白你在描述什么。

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

参考这个启动线程的例子。

qaz2428119 发表于 2021-7-16 13:22:36

创世魂 发表于 2021-7-16 10:33
第一:没有一个具体的例子,没有明白你在描述什么。

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

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

67564226 发表于 2021-7-16 14:18:28

本帖最后由 67564226 于 2021-7-16 14:21 编辑

qaz2428119 发表于 2021-7-16 13:22
静态回调 如果不能传递类实例指针是无法为每个类实例单独回调数据,线程那个是因为启动线程的函数自带一个 ...
这个问题我在易里面用过。

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

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

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

伟业 发表于 2021-7-16 14:42:42

学习来...

qaz2428119 发表于 2021-7-20 15:09:39

67564226 发表于 2021-7-16 14:18
这个问题我在易里面用过。

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

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

kyozy 发表于 2021-7-20 18:30:00

哪些API回调函数不能传递参数. 一般都可以传递的

qaz2428119 发表于 2021-7-21 16:11:23

kyozy 发表于 2021-7-20 18:30
哪些API回调函数不能传递参数. 一般都可以传递的

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

kyozy 发表于 2021-7-22 09:07:52

本帖最后由 kyozy 于 2021-7-22 09:10 编辑

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

kyozy 发表于 2021-7-23 16:55:29

qaz2428119 发表于 2021-7-21 16:11
大多数都不能传递自定义参数,还一般都能
就比如 子类化窗口过程,就不能传递自定义参数 ...

子类化可以通过窗口句柄传递, 你再说说还有哪些不能传递参数
页: [1] 2 3
查看完整版本: 求一个非静态方法的类方法回调的方法