fix: #64 Size of MSG is different on Win32 and Win64

This commit is contained in:
yuanyuanxiang
2025-04-01 03:57:38 +08:00
parent 2dbdc1860f
commit 1492ef4bd2
4 changed files with 102 additions and 14 deletions

View File

@@ -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: