函数中鼠标事件异常及卡牌显示问题技术求助
问题描述
我正在开发卡牌堆显示功能,需获取鼠标左键(LMB)按下时的精确像素位置以返回对应卡牌编号,但当前出现两个问题:
- 无法看到卡牌
- 将
MouseLogic()设为Game类成员函数后,鼠标逻辑完全失效,即便声明了MyMouse M,代码也如同被忽略。
相关函数代码
MouseLogic() 函数
void MouseLogic() { Game G; Coordinates C; MyMouse M; G.PrintLL(10, 25, G.start_user); G.PrintLL(10, 10, G.start_cpu); while (1) { M.ReadMouseInput(); switch (M.InputRecord.EventType) { case MOUSE_EVENT: // mouse input if (M.InputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) { int x = M.InputRecord.Event.MouseEvent.dwMousePosition.X; int y = M.InputRecord.Event.MouseEvent.dwMousePosition.Y; cout << GetCardNumber(x, y); } } } }
GetCardNumber 函数
int GetCardNumber(int x, int y) { if ((x >= 10 && x <= 23) && (y >= 10 && y <= 25)) return 1; else if ((x >= 41 && x <= 54) && (y >= 10 && y <= 25)) return 2; else if ((x >= 72 && x <= 85) && (y >= 10 && y <= 25)) return 3; else if ((x >= 45 && x <= 60) && (y >= 10 && y <= 25)) return 4; else if ((x >= 78 && x <= 91) && (y >= 10 && y <= 25)) return 5; else if ((x >= 10 && x <= 23) && (y >= 25 && y <= 40)) return 6; else if ((x >= 41 && x <= 54) && (y >= 25 && y <= 40)) return 7; else if ((x >= 72 && x <= 85) && (y >= 25 && y <= 40)) return 8; else if ((x >= 45 && x <= 60) && (y >= 25 && y <= 40)) return 9; else if ((x >= 78 && x <= 91) && (y >= 25 && y <= 40)) return 10; else return 0; }
内容的提问来源于stack exchange,提问作者Saar Gold
相关产品推荐
相关产品推荐

