为什么我的for循环未在函数中递增?

时间:2019-01-12 06:01:48

标签: c++

我正在编写一个程序来捕获光标位置,并将其存储在x坐标的int x[]和y坐标的int y[]中。

但是,当我将数组传递给带有for循环的函数时,该函数应该将鼠标的坐标设置为存储在数组中的坐标,并通过每个元素递增,for循环似乎并不会递增i。 >

void click(clock_t &st, int x[], int y[]);

int x[] = { 0, 0, 0, 0, 0, 0, 0 };
int y[] = { 0, 0, 0, 0, 0, 0, 0 };

int amtToggled = 0; //Controlled by hotkeys utilizing GetAsyncKeyState.

if (GetAsyncKeyState(VK_F1) && !inMenu)
{
    GetCursorPos(&n);

    x[0] = n.x;
    y[0] = n.y;

    uWindow = true;
    Sleep(150);
}

void click(clock_t &st, int x[], int y[])
{
    for (int i = 0; i < amtToggled; i++)
    {
        float te = clock() - st;
        if ((te / CLOCKS_PER_SEC) >= (aDelay / 1000))
        {
            LOG(i);
            SetCursorPos(x[i], y[i]);
            mouse_event(MOUSEEVENTF_LEFTDOWN, q, z, 0, 0);
            Sleep(50);
            mouse_event(MOUSEEVENTF_LEFTUP, q, z, 0, 0);
            Sleep(50);
            st = clock();
        }
    }
}

for循环应“遍历”数组并将鼠标位置设置为存储在数组的每个x和y对应元素中的坐标,从而在每次迭代时增加元素位置。相反,我只是保持0。

编辑#1:完整来源:https://pastebin.com/HdaaBbKm

1 个答案:

答案 0 :(得分:1)

好的,会发生什么。此条件仅(可能)对i = 0为真:

if ((te / CLOCKS_PER_SEC) >= (aDelay / 1000))

为什么?完成使用i = 0后,您将更新st。 在下一次迭代中,您将计算te = clock() - st。 但是计算机非常快,因此te可能为零(或一些小数字,如1)。 最后,i > 0 te / CLOCKS_PER_SEC1.02小得多,因此您永远不会输入其他变量的主体。

由于您可能只想在暂停aDelay / 1000的位置上进行迭代,因此只需使用Sleep(aDelay)而不是if

以后,请发布MVCE,以免浪费时间处理其他可能的问题。

相关问题