|
|
一开始只是想封装Illustrator的。然后看到了COM对象有个查看接口的方法,就做了个从接口窗口复制COM代码再翻译到中文的功能。但每次复制粘贴太麻烦了,逛论坛时才知道工具菜单下有个COM封装器,所以又做成翻译火山代码。发现使用 寻找文本 竟然找不到"<"(207行),于是就想着自己解释COM接口。所以代码有些乱。
Illustrator.zip
(542.01 KB, 下载次数: 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>)
- }
复制代码
|
|