gpt4 book ai didi

c++ - 光标位置 c++ GetCursorPos 方法

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:42 26 4
gpt4 key购买 nike

在下面的代码中,我想要鼠标光标在屏幕上的位置,但是无论我将光标移动到哪里,我都会从下面的第二个加星号或粗体(不确定)部分(无论光标在哪里)得到相同的输出:-1957298293 343277548。如果有人有更好的方法来获取光标位置或修复我的代码,请提供帮助。 (顺便说一下,“HANDLE csbiHandle;CONSOLE_SCREEN_BUFFER_INFO csbi;”不是必需的。它们在我以前的方法中使用过,但也失败了)

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>

#ifndef MOUSE_HWHEELED
#define MOUSE_HWHEELED 0x0008
#endif
using namespace std;

int main()
{
LPPOINT point;
HANDLE csbiHandle;
CONSOLE_SCREEN_BUFFER_INFO csbi;
int counter = 0;
DWORD cNumRead, i,fdwMode, fdwSaveOldMode;
INPUT_RECORD irInputBuffer[128];
HANDLE stdHandle;
stdHandle = GetStdHandle(STD_INPUT_HANDLE);
MOUSE_EVENT_RECORD mer;


cout << "|-------------|" << endl
<< "| A |" << endl
<< "|-------------|" << endl;
while(counter++<1000)
{
buttonpress:
ReadConsoleInput(stdHandle, irInputBuffer,128, &cNumRead);
**GetCursorPos(point);**
for(i=0; i<cNumRead; i++)
{
switch(irInputBuffer[i].EventType)
{
case MOUSE_EVENT:
{
mer = irInputBuffer[i].Event.MouseEvent;

if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
cout << "left button press" << endl;
**cout << point->x << " " << point->y << endl;**
}
else
{
goto buttonpress;
}
break;
}
default:{
printf("unknown\n");
break;}
}
}
}


return 0;
}

最佳答案

您的程序没有立即崩溃是您的幸运。 GetCursorPos 函数获取一个 LPPOINT 作为参数,但这并不意味着您应该声明该类型的变量。相反,您应该这样做:

POINT point;
if (GetCursorPos(&point)) {
cout << point.x << "," << point.y << "\n";
}

原因是你的 LPPOINT 在调用时是一个指向“某处”的指针,没有人能说出它指向哪里。所以它很可能指向只读内存,Windows 很乐意检查它并且不写入该内存,而是返回 FALSE。你没有检查函数调用的返回值,所以你不知道它是否成功。

关于c++ - 光标位置 c++ GetCursorPos 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com