游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1509|回复: 4

究竟要如何写才能让DX跑起来两个手柄啊,大侠们!求求

[复制链接]

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2007-6-2 11:12:00 | 显示全部楼层 |阅读模式


我死活也弄不起来第二个手柄。

我见过的例子都是只支持一个手柄的,谁有两个手柄的源代码,让我观摩一下啊?

并不是我自己不肯写,而是我真的不知道怎么写

肯定是思想错了,试问:

    两个手柄是用两个GUID还是用一个GUID?

King_jinjing说

“不是申请两个GUID,而是找到两个不同的GUID”

这句话究竟如何转化成程序呢?

// directinput globals
LPDIRECTINPUT8 lpdi = NULL;    // dinput object
LPDIRECTINPUTDEVICE8 lpdijoya = NULL;    // dinput joystick a
LPDIRECTINPUTDEVICE8 lpdijoyb = NULL;    // dinput joystick b

GUID joystickaGUID; // guid for main joystick
GUID joystickbGUID; // guid for slave joystick

if ( lpdi->CreateDevice( joystickaGUID, &lpdijoya, NULL ) != DI_OK ) return( 0 );
if ( lpdi->CreateDevice( joystickbGUID, &lpdijoyb, NULL ) != DI_OK ) return( 0 );

我试过了,这样是不行的,joystickbGUID是不能得到的。

但是如果都用joystickaGUID的话,就只有一个手柄。

if ( lpdi->CreateDevice( joystickaGUID, &lpdijoya, NULL ) != DI_OK ) return( 0 );
if ( lpdi->CreateDevice( joystickaGUID, &lpdijoyb, NULL ) != DI_OK ) return( 0 );


你设置到lpdijoyb上面的属性都跑到第一个手柄上面去了

这个事情已经弄的我焦头烂额了,你们这些高手怎么就是不肯帮帮我呢?????

这个问题又不是让你们做数学题,推倒复杂的公式之类的,只要有经验的人稍稍点拨就可以领在下茅塞顿开,可是。。。。。。怎么就是没有人能给我直接一些的答案呢。。。。



8

主题

284

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
QQ
发表于 2007-6-2 13:46:00 | 显示全部楼层

Re:究竟要如何写才能让DX跑起来两个手柄啊,大侠们!求

在EnumDevices里利用回调函数找到不同名字的两个设备的GUID再根据GUID来创建设备。

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
 楼主| 发表于 2007-6-2 16:19:00 | 显示全部楼层

Re:究竟要如何写才能让DX跑起来两个手柄啊,大侠们!求


我当时是这么写的,可是不行啊,哪里有问题啊?

//  回调函数
BOOL CALLBACK DI_Enum_Joysticks(LPCDIDEVICEINSTANCE lpddi, LPVOID guid_ptr)
{
        *(GUID*)guid_ptr = lpddi->guidInstance;

        // copy name into global
        strcpy( joyname, (char *)lpddi->tszProductName );

        // stop enumeration after one iteration
        return( DIENUM_STOP );

}

//  EnumDevices 函数.

        //        first find the GUID of your particular joystick
        lpdi->EnumDevices(        DI8DEVCLASS_GAMECTRL,
                        DI_Enum_Joysticks,
                        &joystickaGUID,
                        DIEDFL_ATTACHEDONLY        );

        lpdi->EnumDevices(        DI8DEVCLASS_GAMECTRL,
                        DI_Enum_Joysticks,
                        &joystickbGUID,
                        DIEDFL_ATTACHEDONLY        );

错在哪里了呢?

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
 楼主| 发表于 2007-6-2 16:24:00 | 显示全部楼层

Re:究竟要如何写才能让DX跑起来两个手柄啊,大侠们!求

我是那种纯C/C++ user, windows编程基本不会的. 实在不懂那些函数是干什么....
我只是想让我的第二个手柄跑起来......

50

主题

200

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
 楼主| 发表于 2007-6-2 16:26:00 | 显示全部楼层

Re:究竟要如何写才能让DX跑起来两个手柄啊,大侠们!求

关键我手上一个双手柄的程序例子都没有.
我真的不知道应该怎么做啊.......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 06:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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