Отклонения положения курсора мыши при прокрутке

Я пытаюсь написать небольшой проект для класса программирования. Это простая графическая библиотека, использующая только символы ascii, работающая на консоли Windows (я использую win7 64bit). Проблемы возникают, когда я пытаюсь добавить обработку мыши. Вот код

void importantMouseThings()
{
    DWORD numEvents = 0;
    DWORD numEventsRead = 0;

    GetNumberOfConsoleInputEvents( cgWindow::inputHandle, &numEvents);
    if (numEvents != 0)
    {
        INPUT_RECORD *eventBuffer = new INPUT_RECORD[numEvents];
        ReadConsoleInput(cgWindow::inputHandle, eventBuffer, numEvents, &numEventsRead);

        for (DWORD i = 0; i < numEventsRead; i++)
        {
            if (eventBuffer[i].EventType == MOUSE_EVENT)
            {
                int mousex = eventBuffer[i].Event.MouseEvent.dwMousePosition.X;
                int mousey = eventBuffer[i].Event.MouseEvent.dwMousePosition.Y;
                std::cout << mousex << " " << mousey << std::endl;
            }
        }

        delete[] eventBuffer;
    }
}

Проблема в том, что когда я перемещаю курсор в левый верхний угол окна консоли, cout пишет "0 0", но когда я использую колесо прокрутки (я имею в виду, когда я прокручиваю вниз или вверх), значения меняются на что-то вроде "20 14". Когда я вызываю другое событие мыши, просто слегка перемещая курсор, значения возвращаются в состояние возврата "0 0".

Может быть, я просто не понимаю, что такое dwMousePosition, может быть, это что-то с консольным окном (размеры окна и буфера равны 80x80, поэтому видимых полос прокрутки нет).

РЕДАКТИРОВАТЬ: Ладно, я только что понял, что значение изменения зависит от положения окна. Поэтому, если окно находится в левой части экрана, X-дивергенция очень мала и увеличивается, когда я перемещаю окно вправо. Есть идеи, что не так?

0 ответов

Другие вопросы по тегам