游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2740|回复: 11

[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

[复制链接]

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2006-1-25 12:06:00 | 显示全部楼层 |阅读模式
帮我看看这个DirectIput方面的程序为什么调试没通过


源码在附件中


调试窗口输出如下信息:

--------------------Configuration: DirectInput - Win32 Debug--------------------
Compiling...
DirectInput.cpp
E:\Game\DirectInput\DirectInput.cpp(7) : error C2146: syntax error : missing ';' before identifier 'pDI'
E:\Game\DirectInput\DirectInput.cpp(7) : error C2501: 'LPDIRECTINPUT8' : missing storage-class or type specifiers
E:\Game\DirectInput\DirectInput.cpp(7) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
DirectInput.exe - 3 error(s), 0 warning(s)

希望用VC++开发游戏的朋友能和我进一步交流,我的QQ是:491637976。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-1-25 12:36:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

包含了dinput的头文件跟库文件了吗?

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-1-25 13:01:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

包含了。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-1-25 13:14:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

你的附件在哪?

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-1-25 13:31:00 | 显示全部楼层

Re: [Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什

源码在这里

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-1-25 13:34:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

Sorry,附件好像上传不了。
我把源码粘贴在这里:
#include <stdio.h>
#include <dinput.h>

#define INPUTERROR_NODI                                0x81000001
#define INPUTERROR_NOKEYBOARD                0x81000002

LPDIRECTINPUT9                        pDI = NULL;         
LPDIRECTINPUTDEVICE9        pKeyboard = NULL;

const char        *szWndClass                = "DirectInputKeyboard";
const char        *szProgramName        = "Direct-Input Keyboard Example";
HINSTANCE        g_hInstance;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
void vCleanup(void);
HRESULT        hrInitDirectInput(void);
HRESULT hrInitKeyboard(HWND hWnd);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        WNDCLASS        wc;
        HWND                hWnd;
        MSG                        msg;
        HRESULT                hr;
       
        wc.style = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc = MsgProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hInstance;
        wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH )GetStockObject(WHITE_BRUSH);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = szWndClass;
        RegisterClass(&wc);

        hWnd = CreateWindowEx(WS_EX_TOPMOST,
                szWndClass,
                szProgramName,
                WS_OVERLAPPEDWINDOW,
                0,
                0,
                640,
                480,
                NULL,
                NULL,
                hInstance,
                NULL);
       
        g_hInstance = hInstance;
       
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
       
        hr = hrInitDirectInput();
        if( hr == INPUTERROR_NODI ) {
                MessageBox( hWnd, "DirectInput Error", "Unable to initialize Direct Input.", MB_ICONERROR );
                vCleanup();
                exit(1);
        }
       
        hr = hrInitKeyboard(hWnd);
        if( hr == INPUTERROR_NOKEYBOARD ) {
                MessageBox( hWnd, "DirectInput Error", "Unable to initialize Keyboard.", MB_ICONERROR );
                vCleanup();
                exit(1);
        }

        ZeroMemory( &msg, sizeof(msg) );
        while( msg.message!=WM_QUIT )
        {
                if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
                {
                        TranslateMessage( &msg );
                        DispatchMessage( &msg );
                }
                else {
                }
        }
       
        vCleanup();
       
        return(msg.wParam);
};


LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
        switch( msg )
        {
        case WM_DESTROY:
                PostQuitMessage( 0 );
                return 0;
        default:
                break;
        }
       
        return DefWindowProc( hWnd, msg, wParam, lParam );
}


void vCleanup(void)
{
        if( pKeyboard ) {
                pKeyboard->Unacquire();
                pKeyboard->Release();
        }
        if( pDI ) {
                pDI->Release();
        }
       
        UnregisterClass( szWndClass, g_hInstance );
}


HRESULT        hrInitDirectInput(void)
{
        HRESULT        hReturn = 0;

        if( !pDI ) {
       
                if( FAILED( hReturn = DirectInput8Create( g_hInstance, DIRECTINPUT_VERSION,
                        IID_IDirectInput8, (VOID**)&pDI, NULL ) ) )
                        return(INPUTERROR_NODI);
        }
       
        return(hReturn);
}


HRESULT hrInitKeyboard(HWND hWnd)
{
        HRESULT                        hReturn = 0;
        DIPROPDWORD                dipdw;
       
        if( FAILED( hReturn = pDI->CreateDevice( GUID_SysKeyboard, &pKeyboard, NULL ) ) )
                return(INPUTERROR_NOKEYBOARD);
       

        ZeroMemory(&dipdw,sizeof(DIPROPDWORD));
        dipdw.diph.dwSize                = sizeof(DIPROPDWORD);
        dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
        dipdw.diph.dwObj                = 0;
        dipdw.diph.dwHow                = DIPH_DEVICE;
        dipdw.dwData                        = 10;       
       

        if( FAILED( hReturn = pKeyboard->SetProperty( DIPROP_BUFFERSIZE, &dipdw.diph ) ) )
                return(INPUTERROR_NOKEYBOARD);
       

        if( FAILED( hReturn = pKeyboard->SetDataFormat( &c_dfDIKeyboard ) ) )
                return(INPUTERROR_NOKEYBOARD);
       

        if( FAILED( hReturn = pKeyboard->SetCooperativeLevel( hWnd, DISCL_EXCLUSIVE | DISCL_FOREGROUND ) ) ) {
                return(INPUTERROR_NOKEYBOARD);
        }
       

        pKeyboard->Acquire();
       
        return(0);
}

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-1-25 14:07:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

你加了库文件吗?

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-1-25 16:24:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

还需要什么库文件?我觉的还缺少头文件,因为这个源码连编译都没通过。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-1-25 19:07:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

在工程的项目和属性中增加dinput.lib

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2006-1-25 22:04:00 | 显示全部楼层

Re:[Help!][Help!][Help!]帮我看看这个DirectIput方面的程序为什么

少DINPUT8.LIB,DXGUID.LIB
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 08:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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