递归火山软件开发平台
标题:
【求助】COM封装翻译
[打印本页]
作者:
mogo
时间:
9 小时前
标题:
【求助】COM封装翻译
一开始只是想封装Illustrator的。然后看到了COM对象有个查看接口的方法,就做了个从接口窗口复制COM代码再翻译到中文的功能。但每次复制粘贴太麻烦了,逛论坛时才知道工具菜单下有个COM封装器,所以又做成翻译火山代码。发现使用 寻找文本 竟然找不到"<"(207行),于是就想着自己解释COM接口。所以代码有些乱。
(, 下载次数: 1)
上传
点击文件名下载附件
请教各位大佬以下代码是结构(876行)声明有问题,还是双星指针的代码(1020行)有问题呢?
<火山程序 类型 = "通常" 版本 = 1 />
类 TLIBATTR结构体2 <基础类 = 结构基础类 折叠>
{
# @ @m<DECLARE_STRUCT_CLASS> (TLIBATTR)
方法 类型标识 <公开 属性读 类型 = GUID类>
{
变量 GUID <类型 = GUID类>
@ @<GUID>.m_guid = pdata()->guid;
返回 (GUID)
}
方法 硬件平台 <公开 属性读 类型 = 变整数 注释 = "SYSKIND syskind; 目标硬件平台。" @嵌入式方法 = "">
{
@ (INT_P)(@sn<this>.pdata()->syskind)
}
方法 主版本号 <公开 属性读 类型 = 短整数 注释 = "WORD wMajorVerNum; 主版本号" @嵌入式方法 = "">
{
@ @sn<this>.pdata()->wMajorVerNum
}
方法 次版本号 <公开 属性读 类型 = 短整数 注释 = "WORD wMinorVerNum; 次版本号" @嵌入式方法 = "">
{
@ @sn<this>.pdata()->wMinorVerNum
}
#
}
类 TLIBATTR结构体 <注释 = "https://learn.microsoft.com/zh-cn/windows/win32/api/oaidl/ns-oaidl-tlibattr" 折叠
折叠2 @别名 = "TLIBATTR" @别名类型 = 本地类 @视窗.结构类 = 0>
{
变量 类型标识 <公开 类型 = "字节 [16]" 注释 = "GUID guid; 类型信息的 GUID" @输出名 = "guid">
变量 区域标识 <公开 类型 = 短整数 注释 = "LCID lcid; 成员名称和文档字符串的区域设置" @输出名 = "lcid">
变量 硬件平台 <公开 类型 = 变整数 注释 = "SYSKIND syskind; 目标硬件平台。" @输出名 = "syskind">
变量 主版本号 <公开 类型 = 短整数 注释 = "WORD wMajorVerNum; 主版本号。" @输出名 = "wMajorVerNum">
变量 次版本号 <公开 类型 = 短整数 注释 = "WORD wMinorVerNum; 次版本号。" @输出名 = "wMinorVerNum">
变量 库标志 <公开 类型 = 短整数 注释 = "WORD wLibFlags; 库标志。" @输出名 = "wLibFlags">
}
<火山程序 类型 = "通常" 版本 = 1 />
方法 获取库属性 <公开 类型 = 逻辑型
注释 = "https://learn.microsoft.com/zh-cn/windows/win32/api/oaidl/nf-oaidl-itypelib-getlibattr"
返回值注释 = "成功返回假,失败返回真" 折叠>
参数 TLIBATTR结构 <类型 = TLIBATTR结构体>
{
变量 结构地址 <类型 = 变整数>
结构地址 = 取变量地址 (TLIBATTR结构)
调试输出 (当前时间 (), 取源行号 (), 取源类名 (), 取源方法名 (), 结构地址)
@ hresult = iTypeLib->GetLibAttr((TLIBATTR**)&@<结构地址>);
返回 (执行失败)
}
方法 释放库属性 <公开
注释 = "https://learn.microsoft.com/zh-cn/windows/win32/api/oaidl/nf-oaidl-itypelib-releasetlibattr">
参数 TLIBATTR结构 <类型 = TLIBATTR结构体>
{
变量 结构地址 <类型 = 变整数>
结构地址 = 取变量地址 (TLIBATTR结构)
调试输出 (当前时间 (), 取源行号 (), 取源类名 (), 取源方法名 (), 结构地址)
@ iTypeLib->ReleaseTLibAttr((TLIBATTR*)&@<TLIBATTR结构>);
}
复制代码
运行后报以下错误:
错误: 接收到未经处理的严重异常,代码为: 0xC0000374
被调试程序已经退出,退出码为0xC0000374.
复制代码
另外请教要如何自定义调试数据格式呢?尝试了以下都不成功(405行),或者 取当前语句位置() 中的文件名改为无路径文件名也可以。
<火山程序 类型 = "通常" 版本 = 1 />
方法 调试信息 <公开 静态 类型 = 文本型 注释 = "行号 类名 方法" @嵌入式方法 = "">
{
@ _CT(@sn<current_source_line>) + @sn<nbsp> + _CT(@sn<current_source_class>) + _CT(@sn<current_source_method>)
}
方法 "//调试" <公开 静态 @嵌入式方法 = "">
参数 被调试数据 <@匹配类型 = 通用型 @可扩展 = "">
{
// 调试输出 (当前时间 (), 取源行号 (), 取源类名 (), 取源方法名 (),被调试数据)
@ _DEBUG_STATMENT (DebugTrace (FALSE, 0, 0, _T (@sn<pm_types>),@<当前时间>(),_CT (@sn<current_source_line>),_CT (@sn<current_source_class>),_CT (@sn<current_source_method>), @<被调试数据>))
// 取源行号() = @ _CT (@sn<current_source_line>)
// 取源类名() = @ _CT (@sn<current_source_class>)
// 取源方法名() = @ _CT (@sn<current_source_method>)
}
复制代码
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4