有关directinput的问题
我刚学directx,接触到键盘编程,遇到如下问题。真心求解答
void Game_Run(HWND hwnd)
{
if(!d3ddev) return;
char keys[256];
dinputdev->GetDeviceState(sizeof(keys),(LPVOID)&keys);
if(keys[DIK_ESCAPE] & 0x80)
PostMessage(hwnd,WM_DESTROY,0,0);
if(keys[DIK_LEFT] & 0x80)
MessageBox(hwnd,"left key is pressed","test",MB_OK);
if(keys[DIK_RIGHT] & 0x80)
MessageBox(hwnd,"right key is pressed","test",MB_OK);
if(keys[DIK_UP] & 0x80)
MessageBox(hwnd,"up key is pressed","test",MB_OK);
if(keys[DIK_DOWN] & 0x80)
MessageBox(hwnd,"down key is pressed","test",MB_OK);
}
winmain中消息循环是这样的
MSG message;
while(!gameover)
{
if(PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
Game_Run(window);
}
Game_End(window);
return message.wParam;
问题是,我运行后,一按方向键,点确定就弹出程序,不应该这样吧?不是应该继续运行才对吗?
void Game_Run(HWND hwnd)
{
if(!d3ddev) return;
char keys[256];
dinputdev->GetDeviceState(sizeof(keys),(LPVOID)&keys);
if(keys[DIK_ESCAPE] & 0x80)
PostMessage(hwnd,WM_DESTROY,0,0);
if(keys[DIK_LEFT] & 0x80)
MessageBox(hwnd,"left key is pressed","test",MB_OK);
if(keys[DIK_RIGHT] & 0x80)
MessageBox(hwnd,"right key is pressed","test",MB_OK);
if(keys[DIK_UP] & 0x80)
MessageBox(hwnd,"up key is pressed","test",MB_OK);
if(keys[DIK_DOWN] & 0x80)
MessageBox(hwnd,"down key is pressed","test",MB_OK);
}
winmain中消息循环是这样的
MSG message;
while(!gameover)
{
if(PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
Game_Run(window);
}
Game_End(window);
return message.wParam;
问题是,我运行后,一按方向键,点确定就弹出程序,不应该这样吧?不是应该继续运行才对吗?
...全文
相关推荐
DirectInput.7z
需要vsstudio
DirectInput封装类
DirectInput封装类,可以导入任何使用DX设备的程序进行硬件交互,特别是游戏控制
DirectInput & Xinput - 遊戲手把控制器範例
DirectInput & Xinput - 遊戲手把控制器範例
寻找具有扎实经验的Directinput力反馈编程器
不,我们不提供“求职”服务:尝试Monster或LinkedIn。
使用 DirectX DirectInput 与 SharpDX 和 WPF 的演示 .zip
使用 DirectX DirectInput 与 SharpDX 和 WPF 的演示。直接输入演示使用 DirectX.DirectInput 与 SharpDX 和 WPF 的演示。这需要 USB 连接的游戏手柄或操纵杆输入设备。


