2010-08-13 9 views
8

Domanda rapida sulla sintassi dei ctype, come documentazione per i sindacati non è chiara per un principiante come me.Sintassi union-within-structure nei tipi

dire che voglio implementare una struttura di ingresso (vedi here):

typedef struct tagINPUT { 
    DWORD type; 
    union { 
    MOUSEINPUT mi; 
    KEYBDINPUT ki; 
    HARDWAREINPUT hi; 
    } ; 
} INPUT, *PINPUT; 

Devo o devo cambiare il seguente codice?

class INPUTTYPE(Union): 
    _fields_ = [("mi", MOUSEINPUT), 
       ("ki", KEYBDINPUT), 
       ("hi", HARDWAREINPUT)] 

class INPUT(Structure): 
    _fields_ = [("type", DWORD), 
       (INPUTTYPE)] 

Non sono sicuro che posso avere un campo senza nome per l'Unione, ma l'aggiunta di un nome che non è definito nel Win32API sembra pericoloso.

Grazie,

Mike

risposta

7

la sintassi Struttura non è valido:

AttributeError: '_fields_' must be a sequence of pairs 

Credo che si desidera utilizzare l'attributo anonymous nel vostro ctypes.Structure. Sembra che la documentazione di ctypes crei una struttura TYPEDESC (che è molto simile in costruzione al tagINPUT).

Si noti inoltre che sarà necessario definire DWORD come tipo di base per la propria piattaforma.

Problemi correlati