gpt4 book ai didi

c++ - GetCursorPos 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:38 28 4
gpt4 key购买 nike

我在使用 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->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 时,您是在声明一个指向POINT 对象的指针。因此,当你写

LPPOINT cursorPos = 0;

您正在创建一个名为 cursorPos 的指针并将其设置为 NULL。呼唤

GetCursorPos(cursorPos);

然后失败,因为 GetCursorPos 期望您提供一个指向要用信息填充的 POINT 的指针,并且您提供了一个 NULL 指针。因此,当你写

square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash

当您试图读取 xy 时,您正在读取一个 NULL 指针。这会导致未定义的行为,这里是崩溃。在另一种情况下,您还会遇到未定义的行为,而且恰好不会崩溃。

要解决此问题,请尝试声明一个实际的 POINT 对象,如下所示:

POINT cursorPos;

然后调用

GetCursorPos(&cursorPos);

然后读取位置为

square->setPosition(D3DXVECTOR2(cursorPos.x, cursorPos.y));

希望这对您有所帮助!

关于c++ - GetCursorPos 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939688/

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