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

wxWidgets Discussion :

Evènements souris bloqués


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut Evènements souris bloqués
    Bonjour à tous!

    J'ai un petit problème avec une wxDialog. Via wxFormBuilder, j'ai généré une classe héritant d'une wxDialog. Dans mon code, je fais une instanciation simple de cette classe du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyDialogClass MyDialog(this); // le this est une wxFrame
    MyDialog.ShowModal();
    Seulement le problème que j'ai, c'est qu'à l'exécution, ma fenêtre modale s'affiche bien, mais le clic souris n'a aucun effet dessus! Du coup, je ne peux naviguer dans ma fenêtre que via le clavier. Et encore plus bizarre, si je passe sur une autre fenêtre (word, explorer, bref n'importe quoi!) et que je reviens sur mon appli, la souris redevient efficace comme si de rien était!

    Je pencherais donc sur une mauvaise construction de ma fenêtre lors de son instanciation, sauf que je n'intercepte aucun des évènements de la fenêtre qui pourraient causer se problème (InitDialog ou autre). En bref, je n'interfère pas dans sa construction.

    Des idées?

    Merci d'avance

  2. #2
    dug
    dug est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 151
    Par défaut
    effectivement, bizarre...

    normalement, cela fonctionne sans rien, les évènements sont traités par défaut...

    tu as peut être utilisé dans ta fenêtre principal les évènements souris ?
    il faut à la fin de la fonction mettre event.Skip(); , sinon l'évènement n'est pas transféré au autre objet...
    Ou peut être as tu connecter manuellement un évènement souris dans l'appli.

    enfin bon, j'y dis ça, j'en sais rien moi !

  3. #3
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    J'ai du nouveau: il semblerait que le problème vienne du fait que la dialog soit créée dans une méthode qui est une interception d'un évenement que j'ai créé.
    Il semblerait donc que j'ai mal créé ma classe d'évènements, car cette dialog est créée deux fois dans mon code; une fois dans une interception d'évènement "normale" (clic bouton), et l'autre dans une interception d'un des évenements de la classe suivante:
    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
    class wxMyEvent : public wxCommandEvent
    {
    public:
    	/**
            * \brief Constructeur de la classe wxMyEvent 
            */
        wxMyEvent(wxEventType commandType = wxEVT_NULL, int id = 0, const wxString& sMessage = _("Error"))
        : wxCommandEvent(commandType, id)
    	, m_sMessage(sMessage)
        {
        }
    	/**
            * \brief Destructeur
            */
        wxMyEvent(const wxMyEvent& event)
        : wxCommandEvent(event)
    	, m_sMessage(event.m_sMessage)
        {
        }
     
        virtual wxEvent *Clone() const
    	{
    		return new wxMyEvent(*this);
    	}
     
    	const wxString& GetMessage() const { return m_sMessage; }
    private:
    	wxString m_sMessage;
     
        DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxMyEvent)
    };
    //---------------------------------------------
    extern const wxEventType wxEVT_COMMAND_CANT_CHANGE_PAGE;
    extern const wxEventType wxEVT_COMMAND_ASK_WHICH_EQP;
    //---------------------------------------------
    typedef void (wxEvtHandler::*wxMyEventFunction)(wxMyEvent&);
    //---------------------------------------------
    //!< Macros des évènements
    #define wxMyEventHandler(func) \
        (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMyEventFunction, &func)
     
    #define EVT_CANT_CHANGE_PAGE(winid, fn) \
        wx__DECLARE_EVT1(wxEVT_COMMAND_CANT_CHANGE_PAGE, winid, wxMyEventHandler(fn))
     
    #define EVT_ASK_WHICH_EQP(winid, fn) \
        wx__DECLARE_EVT1(wxEVT_COMMAND_ASK_WHICH_EQP, winid, wxMyEventHandler(fn))
    Est-ce que vous voyez un problème dans ce code?

  4. #4
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    J'ai créé un exemple minimaliste qui reproduit le problème. Dans le zip joint, vous trouverez le fichier fbp , pour regénérer les fichiers Bug_GUI.cpp et Bug_GUI.h. Il y a également les fichiers MyMainFrame.cpp et MyMainFrame.h, qui contiennent les classes de l'application.

    J'utilise Visual Studio .NET 2003, patché avec le wxPack 2.8.7.03 et wxFormBuilder 3.0.55 RC7 sur Windows XP.

    Pour résumer le problème: au lancement de l'application, vous aurez une listbook dans la fenêtre principale. Si vous en sélectionnez le deuxième onglet, une dialogue va s'afficher, sauf que le clic n'aura aucun effet sur les contrôles, sauf si cette dialogue perd, puis reprend le focus.

    Quelqu'un peut-il regénérer l'application pour voir s'il reproduit le problème?
    Merci d'avance.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2007] Evènement souris déplacée
    Par dragoes64 dans le forum IHM
    Réponses: 8
    Dernier message: 30/08/2011, 09h16
  2. Ecran, clavier, souris bloqués
    Par Umlist dans le forum Périphériques
    Réponses: 4
    Dernier message: 07/11/2010, 16h11
  3. clavier et souris bloqués
    Par looping dans le forum Sécurité
    Réponses: 1
    Dernier message: 31/08/2008, 19h59
  4. Evénements souris, glisser-déposer, MouseListener
    Par soft0613 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 02/11/2007, 02h15
  5. Evénement souris ?
    Par Jibees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/05/2006, 11h28

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