You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数中鼠标事件异常及卡牌显示问题技术求助

问题描述

我正在开发卡牌堆显示功能,需获取鼠标左键(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:56:19