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

Windows Presentation Foundation Discussion :

Handle sur fenêtre WPF pour manipulation joystick via directx


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut Handle sur fenêtre WPF pour manipulation joystick via directx
    Hello.

    je tente de manipuler un joystick avec l'api directX.
    Pour ce faire, j'ai besoin d'un pointeur sur ma fenêtre, obtenu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                System.Windows.Controls.Control w = null;
     
                w = vuePTZ.Parent as System.Windows.Controls.Control;
                while ((w is System.Windows.Window) == false)
                {
                    w = w.Parent as System.Windows.Controls.Control;
                }
     
                if (w == null)
                    throw new Exception("Impossible d'obtenir la window principale");
     
                joystickDevice.SetCooperativeLevel(new WindowInteropHelper(w as System.Windows.Window).Handle, CooperativeLevelFlags.Background | CooperativeLevelFlags.NonExclusive);
    Le code ce cette classe est appelé dans le constructeur d'un UserControl, qui se passe lui-même en référence (mon vuePTZ). Or il apparait que la propriété Parent de ce Control est défini à null, (alors qu'il est imbriqué dans un autre Contrôle, imbriqué dans la window).

    Mes questions :
    - Pourquoi est-il à null, WPF ne l'initialise pas ?
    - Y a-t-il un moyen moyen de récupérer un Handle sur la fenêtre ? Sinon comment être sûr que l'on aura la propriété Parent renseignée ?

    Merci

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Essayes ça pour récupérer le Handle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (new WindowInteropHelper(Application.Current.MainWindow)).Handle

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    En effet, ta solution ne peut pas fonctionner. Parent n'est pas toujours renseignée (lors d'utilisation de template par exemple...). En jouant avec le VisualTreeHelper, tu pourras peut-être récupérer ta window.

    Sinon, essaie tout simplement de récupérer ta fenêtre de cette manière :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Current.MainWindow
    Peut-être que ça suffira.

    [Edit] grillé

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Messieurs, vous êtes géniaux

    Merciiiiiii

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/09/2007, 16h32
  2. Réponses: 4
    Dernier message: 24/09/2007, 16h17
  3. Réponses: 10
    Dernier message: 06/08/2007, 11h25
  4. Réponses: 11
    Dernier message: 26/02/2007, 09h44

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