递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] C++的回调函数如何转成火山PC定义事件

[复制链接]

3

主题

43

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
// 回调事件
typedef int (*ReceivePacketCallback)(SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData);


回复

使用道具 举报

28

主题

2123

帖子

7726

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7726
沙发
发表于 5 天前 | 只看该作者
其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函数。
你看看你这个库能不能设置一个用户数据,然后再回调函数里把这个用户数据取出来吧。
回复

使用道具 举报

3

主题

43

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
板凳
 楼主| 发表于 4 天前 | 只看该作者
Xelloss0618 发表于 2025-3-21 22:37
其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函 ...

好的谢谢X大佬
回复

使用道具 举报

3

主题

43

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
地板
 楼主| 发表于 4 天前 | 只看该作者
Xelloss0618 发表于 2025-3-21 22:37
其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函 ...

X大佬(SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData)这种能给个转换列子吗
回复

使用道具 举报

3

主题

43

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
5#
 楼主| 发表于 4 天前 | 只看该作者
本帖最后由 得了吧 于 2025-3-22 11:10 编辑

  1. <火山程序 类型 = "通常" 版本 = 1 />

复制代码
回复

使用道具 举报

3

主题

43

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
6#
 楼主| 发表于 4 天前 | 只看该作者
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. # static int ReceivePacketCallback (SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData, void* userData)
  3. # {
  4. #    return ((@sn<current_class>*)userData)->@<数据进入>( socket, byteData, @an<CVolString> (textData.c_str ()));
  5. # }
  6. <火山程序 类型 = "通常" 版本 = 1 />

  7. 方法 数据进入 <公开 定义事件 类型 = 整数>
  8. 参数 句柄 <类型 = 变整数>
  9. 参数 数据 <类型 = 字节集类>
  10. 参数 数据1 <类型 = 文本型>
  11. {

  12. }
复制代码
回复

使用道具 举报

28

主题

2123

帖子

7726

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7726
7#
发表于 4 天前 | 只看该作者
static int ReceivePacketCallback (SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData, void* userData)
{
   return ((@sn<current_class>*)userData)->@<数据进入>( socket, @an<CVolMem> (byteData.data(), byteData.size()), @an<CVolString> (textData.c_str ()));
}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-26 08:51 , Processed in 0.089056 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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