Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > wxWidgets
wxWidgets Forums d'entraide pour la programmation wxWidgets en C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/11/2011, 01h06   #1
Son Of Sparda
Invité de passage
 
Inscription : décembre 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 7
Points : 2
Points : 2
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.
Son Of Sparda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 20h23   #2
wxXav
Membre confirmé
 
Avatar de wxXav
 
Homme Xavier Perrissoud
Développeur amateur
Inscription : décembre 2008
Messages : 135
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 : 135
Points : 226
Points : 226
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'
wxXav est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2011, 02h10   #3
Son Of Sparda
Invité de passage
 
Inscription : décembre 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 7
Points : 2
Points : 2
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.
Son Of Sparda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h36.


 
 
 
 
Partenaires

Hébergement Web