递归火山软件开发平台

标题: 这种回调如何封装 [打印本页]

作者: 沉默流星    时间: 2025-7-21 21:31
标题: 这种回调如何封装
问题如下:
在封装时碰到结构体中的成员类型,为回调。
这种如何封装呢?


  1. typedef struct FMOD_CREATESOUNDEXINFO
  2. {
  3. FMOD_SOUND_NONBLOCK_CALLBACK   nonblockcallback;
复制代码
  1. typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK)  (FMOD_SOUND *sound, FMOD_RESULT result);
复制代码


这样封装不对
(, 下载次数: 128)


(, 下载次数: 125)

(, 下载次数: 133)

(, 下载次数: 131)

24: 错误: 无法将数据类型"长整数"转换到"FMOD.音频.回调类型"



作者: hcwanz    时间: 2025-7-21 21:45
强转一下指针类型就行了吧
作者: 沉默流星    时间: 2025-7-21 22:15
hcwanz 发表于 2025-7-21 21:45
强转一下指针类型就行了吧

不行的,试过
作者: Xelloss0618    时间: 2025-7-21 22:19
1、封装成属性写,参数类型用变整数,方法里强转
2、封装成嵌入式方法,参数用@匹配方法
作者: 沉默流星    时间: 2025-7-21 22:25
Xelloss0618 发表于 2025-7-21 22:19
1、封装成属性写,参数类型用变整数,方法里强转
2、封装成嵌入式方法,参数用@匹配方法 ...

能否给写个例子
作者: Xelloss0618    时间: 2025-7-21 22:58
<火山程序 类型 = "通常" 版本 = 1 />

类 FMOD_CREATESOUNDEXINFO <公开 @别名 = "FMOD_CREATESOUNDEXINFO" @别名类型 = 本地结构>
{
    方法 回调 <公开 静态 属性写>
    参数 本结构 <类型 = FMOD_CREATESOUNDEXINFO>
    参数 函数指针 <类型 = 变整数 注释 = "用\"取静态方法地址\"">
    {
        @ @<本结构>.nonblockcallback = (FMOD_SOUND_NONBLOCK_CALLBACK)@<函数指针>;
    }

    方法 置回调 <公开 静态 @嵌入式方法 = @"\"\"\"">
    参数 本结构 <类型 = FMOD_CREATESOUNDEXINFO>
    参数 回调函数 <@匹配方法 = "回调函数模板">
    {
        @ @<本结构>.nonblockcallback = &@<回调函数>
    }

    方法 回调函数模板 <静态 类型 = FMOD_RESULT @视窗.前缀文本 = "@F_CALL">
    参数 sound <类型 = FMOD_SOUND指针>
    参数 result <类型 = FMOD_SOUND指针>
    {
        变量 返回值 <类型 = FMOD_RESULT>
        返回 (返回值)
    }

    #
}






欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4