游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1366|回复: 1

莫名其妙的错误

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-6-29 20:04:00 | 显示全部楼层 |阅读模式
只是一个简单的键盘输入初始化程序,编译、连接都没有问题,运行的时候却显示“建立IDIRECTINPUT8接口对象失败”,是调用DirectInput8Create失败导致的?为什么呢?
//环境vc2008 vista
BOOL InitKeyboard(){
        //创建IDirectInput接口对象
        if(FAILED((g_hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&g_pIDirectInput,NULL)))
        {MessageBox(NULL,".","警告",MB_OK|MB_ICONINFORMATION);return false;}//***显示的就是这一行代码执行结果

        //
        if(FAILED(g_pIDirectInput->CreateDevice(GUID_SysKeyboard,&m_pKeyboardDevice,NULL))){
        MessageBox(NULL,"建立键盘输入设备对象失败.","警告",MB_OK|MB_ICONINFORMATION);
        ReleaseCOMObject();
        return false;
        }
//设置键盘输入设备的协调级别
        if(FAILED(m_pKeyboardDevice->SetCooperativeLevel(g_hWnd,DISCL_BACKGROUND|DISCL_NONEXCLUSIVE))){
        MessageBox(NULL,"设置键盘协调级别失败.","警告",MB_OK|MB_ICONINFORMATION);
        ReleaseCOMObject();
        return false;
        }

//设置键盘输入设备的数据格式
        if(FAILED(m_pKeyboardDevice->SetDataFormat(&c_dfDIKeyboard))){
        MessageBox(NULL,"设置键盘的数据读取数据格式失败.","警告",MB_OK|MB_ICONINFORMATION);
        ReleaseCOMObject();
        return false;
        }

//获取键盘输入设备的访问权

        if(FAILED(m_pKeyboardDevice->Acquire())){
        MessageBox(NULL,"取得键盘设备的访问权失败.","警告",MB_OK|MB_ICONINFORMATION);
        ReleaseCOMObject();
        return false;
        }
//初始化键盘缓冲区
        ZeroMemory(keyBuffer,sizeof(char)*256);
        return true;
}

ReleaseCOMObject(){
        if(m_pKeyboardDevice){
                m_pKeyboardDevice->Unacquire();   //释放DirectInput设备的使用权
        SafeRelease(m_pKeyboardDevice);        //释放DirectInput设备对象
            SafeRelease(g_pIDirectInput);        //释放DirectInput对象
        }
}
//调用
int APIENTRY WinMain(HINSTANCE g_hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        InitKeyboard();
          ........
          ........

}

1

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2008-6-29 22:29:00 | 显示全部楼层

Re: 莫名其妙的错误

你看看DirectInput8Create这个返回值是啥,然后查一下SDK的说明看看,
一般是哪里写错了点啥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 03:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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