飞扬工作室 发表于 2023-7-18 17:24:06

有关c++结构的封装示例:

下面的程序演示了如何定义封装C++结构,以及如何封装内嵌结构,及内嵌结构数组:

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

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

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

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

15930887162 发表于 2023-7-18 18:07:50

沙发。。。。。

呵呵仙8 发表于 2023-7-18 18:11:53

:D原来如此,都支持复制,粘贴多行代码了?

voldev. 发表于 2023-7-18 18:18:07

前排留名:loveliness:

大有可为 发表于 2023-7-18 19:02:34

呵呵仙8 发表于 2023-7-18 18:11
原来如此,都支持复制,粘贴多行代码了?

已经支持了

numbersir 发表于 2023-7-19 07:26:06

结构嵌套封装例子

明靓 发表于 2023-7-19 07:37:43

呵呵仙8 发表于 2023-7-18 18:11
原来如此,都支持复制,粘贴多行代码了?

你才发现啊,哈哈哈

折戟沉沙 发表于 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;
} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
typedef struct _RTL_PROCESS_MODULES {
ULONG NumberOfModules;
RTL_PROCESS_MODULE_INFORMATION Modules;
} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;

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

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

dengzf 发表于 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;      /* 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;   /* offset value */宏值* 数值 的数组
} IODBZOR64; /* In case that the number of axes is MAX_AXIS, the number of data is 7 */


飞扬工作室 发表于 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类型把.
页: [1] 2 3 4
查看完整版本: 有关c++结构的封装示例: