C++ 滚动时鼠标光标位置的偏差

C++ 滚动时鼠标光标位置的偏差,c++,winapi,console,mouse,C++,Winapi,Console,Mouse,我正在为编程课写一个小项目。它是一个简单的图形库,只使用ascii字符,在Windows控制台上工作(我使用win7 64位)。当我试图添加鼠标操作时,问题就出现了。这是密码 void importantMouseThings() { DWORD numEvents = 0; DWORD numEventsRead = 0; GetNumberOfConsoleInputEvents( cgWindow::inputHandle, &numEvents);

我正在为编程课写一个小项目。它是一个简单的图形库,只使用ascii字符,在Windows控制台上工作(我使用win7 64位)。当我试图添加鼠标操作时,问题就出现了。这是密码

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;
    }
}
void importantmouseights()
{
DWORD numEvents=0;
DWORD numEventsRead=0;
GetNumberOfConsoleInputEvents(cgWindow::inputHandle和numEvents);
如果(numEvents!=0)
{
INPUT_RECORD*eventBuffer=新的INPUT_RECORD[NumeEvents];
ReadConsoleInput(cgWindow::inputHandle、eventBuffer、numEvents和numEventsRead);
对于(DWORD i=0;istd::难道我看不出代码有什么问题吗?你试过过滤
鼠标移动的事件吗?结果是什么?嗯,现在当我检查鼠标移动标志是否设置在mousex和mousey赋值之前时,一切正常,谢谢。我只是好奇为什么它会这样工作。你能扩展一下你的代码并提供一个完整的、可编译的示例?我对此很感兴趣,但对构建测试程序的其余部分还不够感兴趣。