游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2483|回复: 2

GetDeviceState如何得知某一??按?被?放

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2007-9-29 17:29:00 | 显示全部楼层 |阅读模式
GetDeviceState如何得知某一??按?被?放
???查MSDN的哪一??地方
我?得0x80是按下,那?"按下後放?"呢?
void WINAPI ProcessKBInput()
{
    #define KEYDOWN(name, key) (name[key] & 0x80)

    char     buffer[256];
    HRESULT  hr;
    hr = g_lpDIDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);
    if FAILED(hr)
    {
        // If it failed, the device has probably been lost.
        // Check for (hr == DIERR_INPUTLOST)
        // and attempt to reacquire it here.
        return;
    }

    // Turn the spaceship right or left
    if (KEYDOWN(buffer, DIK_RIGHT));
        // Turn right.
    else if(KEYDOWN(buffer, DIK_LEFT));
        // Turn left.

    // Thrust or stop the spaceship
    if (KEYDOWN(buffer, DIK_UP)) ;
        // Move the spaceship forward.
    else if (KEYDOWN(buffer, DIK_DOWN));
        // Stop the spaceship.
}

16

主题

65

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2007-9-30 00:28:00 | 显示全部楼层

Re:GetDeviceState如何得知某一??按?被?放

用个状态变量标识一下 不就能得到松开的状态了。。
int m_iKeyState;
    // Turn the spaceship right or left
    if (KEYDOWN(buffer, DIK_RIGHT))
     m_iKeyState=1;
        // Turn right.
    else if(KEYDOWN(buffer, DIK_LEFT))
     m_iKeyState=1;
        // Turn left.
    else  
     m_iKeyState=0;

根据 m_iKeyState 的值做判断。。等于0的时候就是放开的时候

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
 楼主| 发表于 2007-9-30 17:10:00 | 显示全部楼层

Re:GetDeviceState如何得知某一??按?被?放

0x80表示按下的??B值,而我要的是按下某按?後??的??B值,我以前有在MSDN看到相?的?明,可是我?在?s找不到了
#define KEYDOWN(name, key) (name[key] & 0x80)
KEYUP的??B值????楹?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 01:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表