Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 7
    Points : 3
    Points
    3

    Par défaut Gestion des évènements en amont

    Salut,

    Je débute avec wxWidgets, je veux imposer une condition au déplacement d'une fenêtre.(héritée de wxframe)

    Comment je fais ça ? Pour le moment j'ai mis ma condition dans un EVT_MOVE qui corrige le placement de la fenêtre si il n'est pas satisfaisant, mais le déplacement se fait quand même peut on le bloquer, ou la gestion de l'event se fait après son exécution?

    Je me demandais si de manière plus simple il était possible d' "override" la fonction move à proprement parler de wxWindow quite à l'appeler ensuite avec super si ma condition est remplie.

    Voilà, si vous pouviez m'éclairer là dessus ce serait pas mal.

    ps: je fais ça pour avoir des fenêtres enfant style photoshop qui bougent en même temps que leur parent et qui ne peuvent pas en sortir, je crois pas que ça existe nativement dans wxWidget mais si vous le savez, enfin même si ça existe je suis curieux pour la gestion des évènements en amont de leur exécution.

  2. #2
    Membre confirmé Avatar de wxXav
    Homme Profil pro Xavier Perrissoud
    Développeur amateur
    Inscrit en
    décembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Perrissoud
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : décembre 2008
    Messages : 145
    Points : 247
    Points
    247

    Par défaut

    Salut.

    Sous Windows, tu peux remplacer la méthode style "WndProc" pour ta classe dérivée de wxFrame.
    Dans ce cas, c'est elle qui sera appelée, et tu pourras gérer tous les événements, même ceux qui ne sont pas directement pris en charge par wxWidgets, tel que WM_MOVING.

    Voici un petit exemple :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WXLRESULT MainFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wparam, WXLPARAM lparam)
    {
        if (nMsg==WM_MOVING)
        {
            // Récupération de la future position de la fenêtre
            RECT* rc=(RECT*)lparam;
            // Il est possible de "bricoler" les coordonnées avant de les laisser filer
            // vers la méthode de la classe de base
            // Par exemple, pour figer la position à x=50 et y=100 :
            rc->left=50;
            rc->top=100;
        }
        return wxFrame::MSWWindowProc(nMsg, wparam, lparam);
    }
    Par contre, je ne connais pas la combine pour faire la même chose sous Linux (et encore moins sous Mac).

    @+
    Xav'

  3. #3
    Invité de passage
    Inscrit en
    décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 7
    Points : 3
    Points
    3

    Par défaut

    Merci beaucoup pour ta réponse wxXav, c'est assez pratique cette manière d’accéder a win32 comme ça, même si ce n'est pas multiplatforme mais je ne comprend surement pas la manière dont wxwidget se place dans le système.

    Pour mon but final je me suis aperçu que ça s'appelait "mdi" je ne connaissait pas cet acronyme, c'est implémenté dans wxWidget apparemment ouf.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •