假设我想要实现一个输入结构(参见 here ):
typedef struct tagINPUT { DWORD type; union { MOUSEINPUT mi; KEYBDINPUT ki; HARDWAREINPUT hi; } ; } INPUT, *PINPUT;
我是否需要更改以下代码?
class INPUTTYPE(Union): _fields_ = [("mi", MOUSEINPUT), ("ki", KEYBDINPUT), ("hi", HARDWAREINPUT)] class INPUT(Structure): _fields_ = [("type", DWORD), (INPUTTYPE)]
我不确定是否可以为联合使用一个未命名的字段,但是添加一个未在Win32API中定义的名称似乎很危险。
谢谢,
迈克
您的结构语法无效:
AttributeError: '_fields_' must be a sequence of pairs
我相信你想用 anonymous 属性ctypes.结构. ctypes文档似乎创建了一个 TYPEDESC 结构(在构造上与tagINPUT非常相似)。
还要注意,您必须将DWORD定义为平台的基类型。