鼠标事件在函数中无法正常工作

问题描述 投票:0回答:1

我正在展示一个卡片堆,需要知道像素的精确位置,所以我设计了一个函数,该函数应该返回按下时 LMB 的任何位置。这个问题是由于某种原因我再也看不到卡片了。

我尝试使该函数成为 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;
}
c++ function mouseevent
1个回答
0
投票

这似乎对任何想知道的人都有效!出于某种原因,我不得不通过课程作为论据。仍然会喜欢这背后的逻辑的解释。

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);
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.