C++ GetCursorPos的问题
我的GetCursorPos有问题。我用directx在光标所在的地方画了一个正方形,但我的代码不起作用,我不知道为什么C++ GetCursorPos的问题,c++,windows,winapi,directx,C++,Windows,Winapi,Directx,我的GetCursorPos有问题。我用directx在光标所在的地方画了一个正方形,但我的代码不起作用,我不知道为什么 LPPOINT cursorPos = 0; GetCursorPos(cursorPos); square->setPosition(D3DXVECTOR2(40.0f,60.0f)); // as a test: works fine... square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos-
LPPOINT cursorPos = 0;
GetCursorPos(cursorPos);
square->setPosition(D3DXVECTOR2(40.0f,60.0f)); // as a test: works fine...
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
我也试过:
LPPOINT cursorPos = 0;
GetCursorPos(cursorPos);
float posX = cursorPos->x; // no crash...
float posY = cursorPos->y; // no crash...
std::cout << posX << posY <<std::endl; // CRASH!
LPPOINT cursorPos=0;
GetCursorPos(cursorPos);
float posX=cursorPos->x;//没有撞车。。。
float posY=cursorPos->y;//没有撞车。。。
std::cout当您声明一个LPPOINT
时,您正在声明一个指向点
对象的指针。所以你写的时候,
LPPOINT cursorPos = 0;
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
您正在创建一个名为cursorPos
的指针,并将其设置为NULL
。电话
GetCursorPos(cursorPos);
然后失败,因为GetCursorPos
希望您提供一个指向要用信息填充的点的指针,并且您提供了一个NULL
指针。因此,当你写作时
LPPOINT cursorPos = 0;
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
在尝试读取x
和y
时,您正在读取NULL
指针。这会导致未定义的行为,这里是崩溃。在另一种情况下,您也得到了未定义的行为,它只是碰巧没有崩溃
要解决此问题,请尝试声明实际的点
对象,如下所示:
POINT cursorPos;
然后打电话
GetCursorPos(&cursorPos);
然后读取位置为
square->setPosition(D3DXVECTOR2(cursorPos.x, cursorPos.y));
希望这有帮助 当您声明LPPOINT
时,您是在声明指向点
对象的指针。所以你写的时候,
LPPOINT cursorPos = 0;
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
您正在创建一个名为cursorPos
的指针,并将其设置为NULL
。电话
GetCursorPos(cursorPos);
然后失败,因为GetCursorPos
希望您提供一个指向要用信息填充的点的指针,并且您提供了一个NULL
指针。因此,当你写作时
LPPOINT cursorPos = 0;
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
在尝试读取x
和y
时,您正在读取NULL
指针。这会导致未定义的行为,这里是崩溃。在另一种情况下,您也得到了未定义的行为,它只是碰巧没有崩溃
要解决此问题,请尝试声明实际的点
对象,如下所示:
POINT cursorPos;
然后打电话
GetCursorPos(&cursorPos);
然后读取位置为
square->setPosition(D3DXVECTOR2(cursorPos.x, cursorPos.y));
希望这有帮助 哦,好的。我以为GetCursorPos会声明该对象,因为我在教程中发现它是这样的。。。现在看起来很愚蠢!非常感谢@TCN27,哎哟,有很多教程的代码都是错误的。知道大量的C++首先会有很大的帮助。哦,好的。我以为GetCursorPos会声明该对象,因为我在教程中发现它是这样的。。。现在看起来很愚蠢!非常感谢@TCN27,哎哟,有很多教程的代码都是错误的。知道相当数量的C++首先是很有意义的。