火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] ★ 重要知识点记录,关于结构体。

[复制链接]

26

主题

1487

帖子

5589

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5589
楼主
发表于 2022-7-14 08:46:51 | 显示全部楼层
纠正一下,你取的是火山类成员变量的地址,并不是结构体的。
+24是32位火山基本类的头大小,64位又是另一个大小了。

这里先给一个结论,不能直接把火山类的成员变量当作结构体使用。
因为结构类成员变量和结构体的内存字节对齐可能会不一样,
就是具体的偏移地址会不同,直接用肯定会出错。

结构类只是在内部定义了一个名为 S 的真结构体,但这个结构体是不会自动创建的,所以你无法通过结构类的地址访问这个结构体。
你必须创建 S 结构体的变量,它才会分配到内存。
既然都用到嵌入式了,就直接用结构类的 SetStruct 和 GetStruct 吧。
回复

使用道具 举报

26

主题

1487

帖子

5589

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5589
沙发
发表于 2022-7-14 10:20:03 | 显示全部楼层
urenai 发表于 2022-7-14 10:04
对啊对啊,@创世魂 抽空把那些内部函数搞个笔记就好了, SetStruct 和 GetStruct 我还头一回见。 ...

这些看封装手册,里面有写,结构类属性的备注里也有写
回复

使用道具 举报

26

主题

1487

帖子

5589

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5589
板凳
发表于 2022-7-14 12:38:10 | 显示全部楼层
jiaozhu 发表于 2022-7-14 12:13
老哥 能出个 怎么使用S 结构体的变量    SetStruct 和 GetStruct   就用这个  @ RECT _rect; 矩形演示个 ...

@ RECT stRect;
// 下一句是将火山矩形类的成员变量赋值到结构体 stRect 里,这一步对 GetWindowRect 没有意义,仅做演示
@ @<矩形>.GetStruct ((@dt<矩形类>::S *)&stRect);
@ BOOL bRes = GetWindowRect ((HWND)@<窗口句柄>, &stRect);
// 将结构体 stRect 的数据赋值到火山结构类变量中
@ @<矩形>.SetStruct ((@dt<矩形类>::S *)&stRect);
@ return bRes;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 10:32 , Processed in 0.088034 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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