游戏开发论坛

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

关于DirectInput的一点问题

[复制链接]

3

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2008-8-22 19:43:00 | 显示全部楼层 |阅读模式
#define DIRECTINPUT_VERSION 0x0800

#include <windows.h>
#include <dinput.h>

LPDIRECTINPUT8  pDI         = NULL;
HINSTANCE hinst;
HWND hd;

void InitInput()
{
        HRESULT result;
        result = DirectInput8Create(hinst,DIRECTINPUT_VERSION,
                                                                IID_IDirectInput8,(void**)&pDI,NULL);
        if(result != DI_OK)
                MessageBox(hd,"建立DirectInput对象失败!","建立DirectInput对象失败!",NULL);


        LPDIRECTINPUTDEVICE8 pDKB;
       
        result = pDKB->CreateDevice(GUID_SysKeyboard,
                                                                IID_IDirectInputDevice8,
                                                                (void**)&pDKB,
                                                                NULL);
        if(result != DI_OK)
                MessageBox(hd,"建立键盘对象失败!","建立键盘对象失败!",NULL);





        result = pDKB->SetDataForMat(&c_dfDIKeyboard);
        if(result != DI_OK)
                MessageBox(hd,"设置数据格式失败!","设置数据格式失败!",NULL);




       
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
HWND hWndMain;
//定义窗口类
BOOL InitWindowsCLass(HINSTANCE hInstance)
{
        WNDCLASS WndClass;
        WndClass.cbClsExtra=0;
        WndClass.cbWndExtra = 0;
        WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
        WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
        WndClass.hIcon = LoadIcon(NULL,"END");
        WndClass.hInstance = hInstance;
        WndClass.lpfnWndProc = WndProc;
        WndClass.lpszClassName = "键盘操作";
        WndClass.lpszMenuName = "键盘操作";
        WndClass.style = 0;
        return RegisterClass(&WndClass);
}
//初始化窗口
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
        HWND hWnd;
        hWnd = CreateWindow("键盘操作",//窗口类名
                                                "键盘操作",//窗口实例的标题名
                                                WS_OVERLAPPEDWINDOW,//窗口的风格
                                                CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角坐标为默认
                                                CW_USEDEFAULT,CW_USEDEFAULT,//窗口的高和宽为默认值
                                                NULL,//此窗口无父窗口
                                                NULL,//窗口无主菜单
                                                hInstance,//应用程序的当前句柄
                                                NULL);//不使用该值
        if(!hWnd)
                return FALSE;
        hd = hWnd;
        hWndMain = hWnd;
        ShowWindow(hWnd,nCmdShow);
        UpdateWindow(hWnd);
        return TRUE;
}
//主函数
int WINAPI WinMain(HINSTANCE hInstance,
                                   HINSTANCE hPrevInstance,
                                   LPSTR lpszCmdLine,
                                   int nCmdShow)//WinMain函数说明
{
        MSG Message;
        if(!InitWindowsCLass(hInstance))
                return FALSE;
        if(!InitWindows(hInstance,nCmdShow))
                return FALSE;
        hinst = hInstance;
        while(GetMessage(&Message,0,0,0))
        {
                TranslateMessage(&Message);
                DispatchMessage(&Message);
        }
        return Message.wParam;
}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
        switch(iMessage)
        {

        case WM_DESTROY:   
                PostQuitMessage (0) ;        
        return 0 ;
        }
        return DefWindowProc (hWnd, iMessage, wParam, lParam) ;
}
--------------------Configuration: D3DInput - Win32 Debug--------------------
Compiling...
D3DInput.cpp
c:\documents and settings\xzc\桌面\3dinput\d3dinput.cpp(21) : error C2039: 'CreateDevice' : is not a member of 'IDirectInputDevice8A'
        d:\program files\d3dsdk\include\dinput.h(1855) : see declaration of 'IDirectInputDevice8A'
c:\documents and settings\xzc\桌面\3dinput\d3dinput.cpp(32) : error C2039: 'SetDataForMat' : is not a member of 'IDirectInputDevice8A'
        d:\program files\d3dsdk\include\dinput.h(1855) : see declaration of 'IDirectInputDevice8A'
执行 cl.exe 时出错.

出现这个错误是为什么?
我用vc6.0链接了dxguid.lib dinput.lib,就是不知道问题出现在哪.

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-8-23 09:41:00 | 显示全部楼层

Re:关于DirectInput的一点问题

程序错误,你用没赋值的Device去创建Device自己是啥创意?

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-8-25 19:46:00 | 显示全部楼层

Re:关于DirectInput的一点问题

应该是dinput8.lib
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 13:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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