Heesob Park wrote:
As you know, the INPUT structure defined like this:
typedef struct tagINPUT {
DWORD type;
union {MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
}INPUT, *PINPUT;typedef struct tagMOUSEINPUT {
LONG dx;
LONG dy;
DWORD mouseData;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} MOUSEINPUT, *PMOUSEINPUT;typedef struct tagKEYBDINPUT {
WORD wVk;
WORD wScan;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT;typedef struct tagHARDWAREINPUT {
DWORD uMsg;
WORD wParamL;
WORD wParamH;
} HARDWAREINPUT, *PHARDWAREINPUT;The sizeof(MOUSEINPUT) is 24, sizeof(KEYBDINPUT) is 16, and
sizeof(HARDWAREINPUT) is 8.
Therefore, sizeof(INPUT) = sizeof(DWORD) + maxsizeof(union) = 4 + 24 =
28.Regards,
Park Heesob
Thank you again, now I've got the point. One last question: The size of
the MOUSEINPUT struct is 8 + 8 + 4 + 4 + 4 = 28 I see, so am I right in
thinking that the pointer isn't important for this computation?
Otherwise, since it's an unsigned long, it should have a size of 8 also,
what makes the struct a size of 36 bytes? Or is this ignored because of
passing in nil later?
You see, I'm not really good in working with C structs.
Marvin
···
--
Posted via http://www.ruby-forum.com/\.