C++ GetKeyState不';不能在Windows 2000(C+;+;)中工作
我刚刚在Windows2000SP4系统上测试了我的DirectX游戏,但它不会收到任何鼠标点击 这是我检查鼠标点击的方式:C++ GetKeyState不';不能在Windows 2000(C+;+;)中工作,c++,windows,directx,mouse,C++,Windows,Directx,Mouse,我刚刚在Windows2000SP4系统上测试了我的DirectX游戏,但它不会收到任何鼠标点击 这是我检查鼠标点击的方式: unsigned int mButtons = 0; if (GetKeyState(VK_LBUTTON) < 0) mButtons |= HIDBoss::MOUSE_LEFT; if (GetKeyState(VK_RBUTTON) < 0) mButtons |= HIDBoss::MOUSE_RIGHT; if (G
unsigned int mButtons = 0;
if (GetKeyState(VK_LBUTTON) < 0) mButtons |= HIDBoss::MOUSE_LEFT;
if (GetKeyState(VK_RBUTTON) < 0) mButtons |= HIDBoss::MOUSE_RIGHT;
if (GetKeyState(VK_MBUTTON) < 0) mButtons |= HIDBoss::MOUSE_MIDDLE;
if (GetKeyState(VK_XBUTTON1) < 0) mButtons |= HIDBoss::MOUSE_4;
if (GetKeyState(VK_XBUTTON2) < 0) mButtons |= HIDBoss::MOUSE_5;
unsigned int mButtons=0;
if(GetKeyState(VK_LBUTTON)<0)mButtons |=HIDBoss::鼠标左键;
if(GetKeyState(VK_RBUTTON)<0)mButtons |=HIDBoss::鼠标右键;
如果(GetKeyState(VK_MBUTTON)<0)mButtons |=HIDBoss::鼠标中键;
if(GetKeyState(VK_XBUTTON1)<0)mButtons |=HIDBoss::MOUSE_4;
如果(GetKeyState(VK_XBUTTON2)<0)mButtons |=HIDBoss::MOUSE_5;
等等
此代码在Windows 7和XP 32/64位上运行良好
如果我改用OIS库(它使用DirectX输入),问题已经解决了,但是它包含一些bug,所以我宁愿避免它
有人能提出为什么GetKeyState不能在W2K上工作吗?这可能是因为系统在过去几年中没有通过Windows Update进行更新吗
谢谢你抽出时间
比尔我不确定为什么它不起作用,但我建议改用它 编辑:回答您的评论。这只是一个建议,但同样很容易通过调用以下命令来确定按钮是否互换:
GetSystemMetrics(SM_SWAPBUTTON)
您的大问题来自这样一个事实,即GetKeyState不应该只返回鼠标按钮和键盘按钮的值。事实上,它在某些操作系统中确实有效,这并不是所有操作系统都应该依赖的
应用程序在中调用GetKeyState
对键盘输入消息的响应。
此函数用于检索
输入消息被激活时的键
生成
值得注意的是,它特别提到调用它以响应键盘输入消息(即WM_键[UP/DOWN])。同样,也没有提到这对老鼠有效。因此,您最好只使用GetAsyncKeyState…您能详细说明一下吗?文档说它返回的是物理按钮事件,而不是逻辑上的“映射”事件。有没有一个很好的理由让我“迷惑”那些习惯于点击另一个方向的用户?当然,我会尝试,如果它真的有效,那就是一个足够好的理由!但我还有什么需要注意的吗?谢谢