Bonjour,

Je développe actuellement un petit jeu de plate forme 2D à partir d'un projet WPF en C# sur Visual Studio

Par simple fierté et/ou masochisme, j'essaie de n'utiliser aucune biblio autre que celle fournie officiellement par Microsoft.

Et pour le moment c'est pour la prise en charge d'un gamepad que j'échoue lamentablement.

En utilisant la biblio externe "SharpDX.DirectInput" je n'ai aucun soucis pour créer une class Gamepad fonctionnelle.
Mais quand j'essaie de réaliser sensiblement la même avec la biblio "Microsoft.DirectX.DirectInput" dont la structure et les objets semblent pourtant très proche, mon application freeze très rapidement.

Le plus étrange étant que mon programme est validé par le compilateur, mais que la simple exécution de méthodes natives de cette bibliothèque font littéralement planter mon application.
Est-il possible que mes DLL DirectX soient à ce point obsolètes ? Je suis sur un Windows 10 tout ce qu'il y a de plus à jour et non piraté :/

Je vous joins un code exemple si cela peut être plus explicite :

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
 
 
using System;
using Microsoft.DirectX.DirectInput;
 
namespace Beber_GamepadDirectX
{
 
    public enum eMyPadConnState
    {
        Init, Unfound, Failed, Connected, Lost
    }
class MyGamepad
    {
 
 
        private const int EDGE_LR_VALUE = 32767;
        private Microsoft.DirectX.DirectInput.JoystickState PadState; 
            // La simple declaration de cette variable freeze mon application :/
        private Device Pad;
        public sMyPadState State;
 
 
        public MyGamepad() //Constructor
        {            
            DeviceList DL;
 
            DL = Manager.GetDevices(DeviceType.Gamepad, EnumDevicesFlags.AttachedOnly); //cette requête génère un freeze aussi et c'est une classe native de la biblio
 
 
            if (DL.Count == 0)
            {
                State.connection = eMyPadConnState.Unfound;
                return;
            }
 
            try
            {
                DeviceInstance FirstDevice = (DeviceInstance)DL.Current;
                Pad = new Device(FirstDevice.InstanceGuid);
                Pad.Acquire();
                Pad.Poll();
            }
            catch
            {
                State.connection = eMyPadConnState.Failed;
                return;
            }
 
            State.connection = eMyPadConnState.Connected;
 
        }   // end constructor
}
}