【求助】火山视窗中怎么封装含联合体 union 的结构体?
本帖最后由 raomengkai 于 2024-11-25 16:15 编辑需要封装 INPUT 这个结构体,想采用别名封装方式,发现该结构体中含有一个联合体,请问这种结构体该怎么封装?
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
} DUMMYUNIONNAME;
} INPUT, *PINPUT, *LPINPUT;
还有就是该结构体在函数 SendInput 中使用,可能会使用到该结构体的数组,如果该结构体能使用别名封装方式封装,那又该怎么封装成数组来使用呢?
望大神们解答!谢谢!
把联合体成员当作所属结构体的成员来调用就行.数组也是用结构体数组就行.
只要不同时调用联合体成员就好
hcwanz 发表于 2024-11-25 16:57
把联合体成员当作所属结构体的成员来调用就行.数组也是用结构体数组就行.
只要不同时调用联合体成员就好
感谢提醒,忘了使用别名封装不需要按照结构成员的原本顺序排列这个特性了,所以别名封装可以同时将 mi ki 和 hi 一起封进去,这倒是解决了联合体封装的问题了,十分感谢!但是你说“数组也是用结构体数组就行”是什么意思呢?是使用“结构数组模板类”吗?我试过使用“结构数组模板类”将别名封装的INPUT结构体再次封装成数组结构会出现错误呢! 那用`标准数组模板类`试试 用别名可以封装,这个API我有写过,你可以参考 PIV模块的「键鼠输入」类 本帖最后由 raomengkai 于 2024-11-26 19:20 编辑
hcwanz 发表于 2024-11-25 19:59
那用`标准数组模板类`试试
试了下“标准数组模板类”,果然可以!非常感谢! Xelloss0618 发表于 2024-11-25 21:04
用别名可以封装,这个API我有写过,你可以参考 PIV模块的「键鼠输入」类
感谢你的回复!下了 PIV模块 看了下,发现他用的是他自己的“PIV数组模板”,4楼的朋友说可以用“标准数组模板类”,我试了一下没问题,就还是用“标准数组模板类”算了,毕竟是原生库里的,免得又去安装额外的库!感谢你的回复! raomengkai 发表于 2024-11-26 19:19
感谢你的回复!下了 PIV模块 看了下,发现他用的是他自己的“PIV数组模板”,4楼的朋友说可以用“标准数 ...
没区别的,PIV数组模板算是标准数组模板类的升级版,补充了更多功能。
页:
[1]