火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[官方] 有关c++结构的封装示例:

[复制链接]

53

主题

1336

帖子

7463

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7463
跳转到指定楼层
楼主
发表于 2023-7-18 17:24:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
下面的程序演示了如何定义封装C++结构,以及如何封装内嵌结构,及内嵌结构数组:

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

类 PROCESSENTRY32 <公开 @视窗.结构类 = 0>
{
    变量 dwSize <公开 类型 = 整数>
    变量 cntUsage <公开 类型 = 整数>
    变量 th32ProcessID <公开 类型 = 整数>
    变量 th32DefaultHeapID <公开 类型 = 变整数>
    变量 th32ModuleID <公开 类型 = 整数>
    变量 cntThreads <公开 类型 = 整数>
    变量 th32ParentProcessID <公开 类型 = 整数>
    变量 pcPriClassBase <公开 类型 = 整数>
    变量 dwFlags <公开 类型 = 整数>
    变量 szExeFile <公开 类型 = "短整数 [260]" 注释 = "如果是A版本API使用,此处需要将\"短整数\"改成\"字节\".">
    变量 ""
    变量 成员2 <公开 类型 = 结构2 注释 = "内嵌结构">
    变量 成员3 <公开 类型 = "结构2 [100]" 注释 = "内嵌结构数组">
}

类 结构2 <公开 @视窗.结构类 = 0>
{
    变量 dwSize <公开 类型 = 整数>
    变量 cntUsage <公开 类型 = 整数>
    变量 成员2 <公开 类型 = 结构3>
}

类 结构3 <公开 @视窗.结构类 = 0>
{
    变量 dwSize <公开 类型 = 整数>
    变量 cntUsage <公开 类型 = 整数>
}

回复

使用道具 举报

1

主题

24

帖子

245

积分

中级会员

Rank: 3Rank: 3

积分
245
沙发
发表于 2023-7-18 18:07:50 来自手机 | 只看该作者
沙发。。。。。
回复

使用道具 举报

50

主题

481

帖子

1909

积分

金牌会员

Rank: 6Rank: 6

积分
1909
板凳
发表于 2023-7-18 18:11:53 | 只看该作者
原来如此,都支持复制,粘贴多行代码了?
回复

使用道具 举报

2

主题

60

帖子

362

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
362
QQ
地板
发表于 2023-7-18 18:18:07 | 只看该作者
前排留名
回复

使用道具 举报

22

主题

238

帖子

2042

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2042
5#
发表于 2023-7-18 19:02:34 | 只看该作者
呵呵仙8 发表于 2023-7-18 18:11
原来如此,都支持复制,粘贴多行代码了?

已经支持了
火山学习交流群: 1027649189
回复

使用道具 举报

6

主题

123

帖子

877

积分

高级会员

Rank: 4

积分
877
6#
发表于 2023-7-19 07:26:06 来自手机 | 只看该作者
结构嵌套封装例子
回复

使用道具 举报

15

主题

339

帖子

1403

积分

核心用户

易语言+火山+HTML+SQL

Rank: 9Rank: 9Rank: 9

积分
1403
QQ
7#
发表于 2023-7-19 07:37:43 | 只看该作者
呵呵仙8 发表于 2023-7-18 18:11
原来如此,都支持复制,粘贴多行代码了?

你才发现啊,哈哈哈
---------QQ:884905066 明靓---------
回复

使用道具 举报

28

主题

215

帖子

2489

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2489
8#
发表于 2023-7-19 11:31:27 | 只看该作者

typedef struct _RTL_PROCESS_MODULE_INFORMATION {
HANDLE Section; // Not filled in
PVOID MappedBase;
PVOID ImageBase;
ULONG ImageSize;
ULONG Flags;
USHORT LoadOrderIndex;
USHORT InitOrderIndex;
USHORT LoadCount;
USHORT OffsetToFileName;
UCHAR FullPathName[256];
} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;


typedef struct _RTL_PROCESS_MODULES {
ULONG NumberOfModules;
RTL_PROCESS_MODULE_INFORMATION Modules[1];
} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;



吴总,这种结构体呢,Modules[],这个是未知长度,需要通过NumberOfModules才知道。



这是我自己内嵌写的,如何用火山来表达?


回复

使用道具 举报

39

主题

528

帖子

3705

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3705
9#
发表于 2023-7-19 13:43:40 | 只看该作者
本帖最后由 dengzf 于 2023-7-19 15:31 编辑

火山的 @视窗.结构类 中不支持使用文本型, 如何处理? 用指针吗下面这种呢?
另外 下面这些如何在火山语法中实现?
#define MAX_SPINDLE     24    这个宏的值是根据系统加载环境不同, 自动判断加载哪一个的 , 它的值 4, 8 ,24
typedef struct odbact2 {
         short        datano;                /* spindle number */
         short        type;                /* dummy */
         long        data[MAX_SPINDLE];        /* spindle data */
} ODBACT2 ;


还有这种, 宏值* 数值 的数组  MAX_AXIS 也是一个条件变化的宏, 8 12 48 96这样
/* cnc_rdzofsr64:read work zero offset value(area specified) */
typedef struct iodbzor64 {
    short       datano_s;           /* start offset number */
    short       type;               /* axis number */
    short       datano_e;           /* end offset number */
    short       dummy;              /* dummy */
    REALDATA    data[MAX_AXIS*8];   /* offset value */  宏值* 数值 的数组
} IODBZOR64; /* In case that the number of axes is MAX_AXIS, the number of data is 7 */


64b790b222e2e. (0 Bytes, 下载次数: 0)

64b790b222e2e.
回复

使用道具 举报

53

主题

1336

帖子

7463

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7463
10#
 楼主| 发表于 2023-7-19 16:36:59 | 只看该作者
折戟沉沙 发表于 2023-7-19 11:31
typedef struct _RTL_PROCESS_MODULE_INFORMATION {
HANDLE Section; // Not filled in
PVOID MappedBase;

这种内嵌可变的,用字节集配合结构的S类型把.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 03:40 , Processed in 0.094470 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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