Merge pull request #67 from yuanyuanxiang/bugFix
fix: #64 Size of MSG is different on Win32 and Win64
This commit is contained in:
@@ -273,17 +273,24 @@ VOID CScreenManager::SendNextScreen(const char* szBuffer, ULONG ulNextSendLength
|
||||
|
||||
VOID CScreenManager::ProcessCommand(LPBYTE szBuffer, ULONG ulLength)
|
||||
{
|
||||
// <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>Ϸ<EFBFBD>
|
||||
if (ulLength % sizeof(MSG) != 0)
|
||||
return;
|
||||
int msgSize = sizeof(MSG64);
|
||||
if (ulLength % 28 == 0) // 32λ<32><CEBB><EFBFBD>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
msgSize = 28;
|
||||
else if (ulLength % 48 == 0) // 64λ<34><CEBB><EFBFBD>ƶ˷<C6B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
msgSize = 48;
|
||||
else return; // <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>Ϸ<EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ULONG ulMsgCount = ulLength / sizeof(MSG);
|
||||
ULONG ulMsgCount = ulLength / msgSize;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (int i = 0; i < ulMsgCount; ++i)
|
||||
BYTE* ptr = szBuffer;
|
||||
MSG32 msg32;
|
||||
MSG64 msg64;
|
||||
for (int i = 0; i < ulMsgCount; ++i, ptr += msgSize)
|
||||
{
|
||||
MSG *Msg = (MSG *)(szBuffer + i * sizeof(MSG));
|
||||
MSG64* Msg = msgSize == 48 ? (MSG64*)ptr :
|
||||
(MSG64*)msg64.Create(msg32.Create(ptr, msgSize));
|
||||
switch (Msg->message)
|
||||
{
|
||||
case WM_LBUTTONDOWN:
|
||||
|
||||
Reference in New Issue
Block a user