IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

direct input acquisition


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut direct input acquisition
    Bonjours.

    voila je me suis mis à directx 9 sous windows xp sp3.
    et avant de commencer la 3d je voulais déjà aprendre à utiliser direct input (genre afficher les valeurs des touches).
    j'ai dl dx SDK avec les samples et tutos. problème les tutos direct input je peux pas compiler les samples il me manque "afxres.h" alors j'ai voulu faire les tutos qui ne sont naturellement pas les même que les samples (allez savoir pourquoi) et c'est là que l'histoire commence ^^'.

    lorsque je demande d'acquérir le clavier il me sort un E_ACCESSDENIED en retour
    là je me dis bizzard peut être qu'il était pas dispo bon je vais faire une boucle de 5 sec pour voir si je peux l'avoire à la longue et ben non rien y fait il veut pas prendre mon clavier et je pige pas pourquoi TT_TT.

    voici le code de mon initialisation du clavier pour direct input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    HRESULT InitInput (HWND hWnd){
    	HRESULT hr;
     
    	hr = DirectInput8Create(GetModuleHandle(NULL),	// instance du programme
    							DIRECTINPUT_VERSION,	// version de direct input
    							IID_IDirectInput8,		// version de l'interface retournée
    							(void **) &g_pDI,		// la référence à l'interface qui va être créée
    							NULL);					// l'adresse de l'objet qui contrôle l'interface de le cas d'une agregation COM.
    													// Habituellement à NULL car l'agrégation n'est pas souvent utilisée
    	if FAILED(hr){
    		MessageBox( NULL, L"Impossible de créer l'objet DIRECTINPUT8!!\nFermeture de l'application.", L"Tutorial.exe", MB_OK);
    		Cleanup();
    		return hr;
    	}
     
    	hr = g_pDI->CreateDevice(GUID_SysKeyboard,	// l'identifier unique du contrôle à créer
    							 &g_pDIDevice,		// l'objet qui reçoit l'instance du contrôleur
    							 NULL);				// l'adresse de l'objet qui contrôle l'interface de le cas d'une agregation COM.
    												// Habituellement à NULL car l'agrégation n'est pas souvent utilisée
    	if FAILED(hr){
    		MessageBox( NULL, L"Impossible de créer l'objet du clavier !!\nFermeture de l'application.", L"Tutorial.exe", MB_OK);
    		Cleanup();
    		return hr;
    	}
     
    	hr = g_pDIDevice->SetDataFormat(&c_dfDIKeyboard);
     
    	if FAILED(hr){
    		MessageBox( NULL, L"Impossible de créer l'objet du clavier !!\nFermeture de l'application.", L"Tutorial.exe", MB_OK);
    		Cleanup();
    		return hr;
    	}
     
    	hr = g_pDIDevice->SetCooperativeLevel( hWnd, DISCL_FOREGROUND|DISCL_NONEXCLUSIVE);
     
    	if FAILED(hr){
    		MessageBox( NULL, L"Impossible de créer l'objet du clavier !!\nFermeture de l'application.", L"Tutorial.exe", MB_OK);
    		Cleanup();
    		return hr;
    	}
     
    	DWORD time = timeGetTime();
    	while (FAILED(hr = g_pDIDevice->Acquire()) && (timeGetTime() - time) < 5000);
     
    	if FAILED(hr){
    		MessageBox( NULL, L"Impossible d'aquérir l'objet du clavier !!\nFermeture de l'application.", L"Tutorial.exe", MB_OK);
    		Cleanup();
    		return hr;
    	}
     
    	return hr;
    }
    oh et voici mon clavier le logiteck G11

    si ça peut venir de ça...

    merci d'avance.

  2. #2
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    c'est peut être une question bête, mais es tu sur que la fenêtre de ton application ait le focus au moment de ton Acquire(), car si ta fenêtre n'est pas active, il est impossible au vu de tes réglages que direct input accède au clavier.

  3. #3
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    merci pour l'info.
    dans le tuto ils en parlent pas et vu que je début sur directX je peux pas l'invanter ^^.

    je vais voir ça et je tien au courant.

  4. #4
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    ouaïiiiiiiiiiiiiiiiiiiiiiiiiii ^^

    ça marche thx ^^'

    c'était ça héhé merci pour cette aide précieuse.

    vaut mieux poser les question idiotes que de rester idiot toute ça vie ^^.
    (ça fait gagner du temps)

  5. #5
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    de rien, et un point supplémentaire que je viens de me rappeler, si ta fenêtre perd le focus et le réacquière, il faut pas oublier de faire un Acquire() avant de faire un GetDeviceState(...) parce direct input (avec tes réglages) "perd" le clavier.

  6. #6
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    thx je m'en rappelerais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème direct Input
    Par StrikerFred dans le forum DirectX
    Réponses: 1
    Dernier message: 16/02/2007, 13h00
  2. [DX9][C#]Direct Input - Action mapping
    Par Imhotep dans le forum DirectX
    Réponses: 4
    Dernier message: 06/07/2006, 23h15
  3. Direct Input
    Par bilaloch dans le forum DirectX
    Réponses: 7
    Dernier message: 18/04/2006, 22h21
  4. Réponses: 4
    Dernier message: 16/09/2005, 15h38
  5. Problème de compilation avec Direct Input
    Par di-giac dans le forum DirectX
    Réponses: 6
    Dernier message: 06/05/2005, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo