递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【求助】火山视窗中怎么封装含联合体 union 的结构体?

[复制链接]

6

主题

27

帖子

254

积分

中级会员

Rank: 3Rank: 3

积分
254
跳转到指定楼层
楼主
发表于 2024-11-25 16:14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 raomengkai 于 2024-11-25 16:15 编辑

需要封装 INPUT 这个结构体,想采用别名封装方式,发现该结构体中含有一个联合体,请问这种结构体该怎么封装?
  1. typedef struct tagINPUT {
  2.   DWORD type;
  3.   union {
  4.     MOUSEINPUT    mi;
  5.     KEYBDINPUT    ki;
  6.     HARDWAREINPUT hi;
  7.   } DUMMYUNIONNAME;
  8. } INPUT, *PINPUT, *LPINPUT;
复制代码


还有就是该结构体在函数 SendInput 中使用,可能会使用到该结构体的数组,如果该结构体能使用别名封装方式封装,那又该怎么封装成数组来使用呢?


望大神们解答!谢谢!
回复

使用道具 举报

75

主题

1118

帖子

5044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5044
沙发
发表于 2024-11-25 16:57:32 | 只看该作者
把联合体成员当作所属结构体的成员来调用就行.数组也是用结构体数组就行.

只要不同时调用联合体成员就好
回复

使用道具 举报

6

主题

27

帖子

254

积分

中级会员

Rank: 3Rank: 3

积分
254
板凳
 楼主| 发表于 2024-11-25 18:50:40 | 只看该作者
hcwanz 发表于 2024-11-25 16:57
把联合体成员当作所属结构体的成员来调用就行.数组也是用结构体数组就行.

只要不同时调用联合体成员就好

感谢提醒,忘了使用别名封装不需要按照结构成员的原本顺序排列这个特性了,所以别名封装可以同时将 mi ki 和 hi 一起封进去,这倒是解决了联合体封装的问题了,十分感谢!但是你说“数组也是用结构体数组就行”是什么意思呢?是使用“结构数组模板类”吗?我试过使用“结构数组模板类”将别名封装的INPUT结构体再次封装成数组结构会出现错误呢!
回复

使用道具 举报

75

主题

1118

帖子

5044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5044
地板
发表于 2024-11-25 19:59:33 | 只看该作者
那用`标准数组模板类`试试
回复

使用道具 举报

28

主题

2152

帖子

7804

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7804
5#
发表于 2024-11-25 21:04:21 | 只看该作者
用别名可以封装,这个API我有写过,你可以参考 PIV模块的「键鼠输入」类
回复

使用道具 举报

6

主题

27

帖子

254

积分

中级会员

Rank: 3Rank: 3

积分
254
6#
 楼主| 发表于 2024-11-26 19:15:05 | 只看该作者
本帖最后由 raomengkai 于 2024-11-26 19:20 编辑
hcwanz 发表于 2024-11-25 19:59
那用`标准数组模板类`试试

试了下“标准数组模板类”,果然可以!非常感谢!
回复

使用道具 举报

6

主题

27

帖子

254

积分

中级会员

Rank: 3Rank: 3

积分
254
7#
 楼主| 发表于 2024-11-26 19:19:36 | 只看该作者
Xelloss0618 发表于 2024-11-25 21:04
用别名可以封装,这个API我有写过,你可以参考 PIV模块的「键鼠输入」类

感谢你的回复!下了 PIV模块 看了下,发现他用的是他自己的“PIV数组模板”,4楼的朋友说可以用“标准数组模板类”,我试了一下没问题,就还是用“标准数组模板类”算了,毕竟是原生库里的,免得又去安装额外的库!感谢你的回复!
回复

使用道具 举报

28

主题

2152

帖子

7804

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7804
8#
发表于 2024-11-26 21:32:24 | 只看该作者
raomengkai 发表于 2024-11-26 19:19
感谢你的回复!下了 PIV模块 看了下,发现他用的是他自己的“PIV数组模板”,4楼的朋友说可以用“标准数 ...

没区别的,PIV数组模板算是标准数组模板类的升级版,补充了更多功能。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-6 04:39 , Processed in 0.082145 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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