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 :

comment griser le bouton "fermer" ?


Sujet :

wxWidgets

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut comment griser le bouton "fermer" ?
    Bonjour, dans mon application j'ai un document qui contient plusieurs vues, chacune contenant une wxMDIChildFrame. Je voudrais empecher les utilisateur d'avoir la possibilité de fermer certaines vues.

    Y'a t'il moyen de griser la "croix" de la fenetre, sans changer le constructeur de la vue et en laissant les icones 'minimiser' et 'maximiser' valides?
    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu as essayer d'utiliser un style sans wxCLOSE_BOX ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    oui, et ca marche. Le problème est que j'ai un constuteur identique pour toutes les vues que je crée, or j'aimerais qu'on puisse en fermer certaines, mais pas toutes.
    Si j'utilise un style sans wxCLOSE_BOX dans le constructeur, y'aurait-il un moyen de rajouter cette fonction ailleurs ?
    L'idéal serait une sorte de setCloseEnable( bool ) pour les wxMDIChildFrame.

  4. #4
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Il faut que tu utilises SetWindowStyle ou SetWindowStyleFlag pour ça. Le problème c'est que tout ne peut pas être modifié dans le style mais theoriquement ça devrait passer pour ce que tu veux.

    http://www.wxwidgets.org/manuals/2.6...setwindowstyle

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Le constructeur par défaut de ma wxMDIChildFrame est défini avec wxDEFAULT_FRAME_STYLE.
    Si je fait un SetWindowStyleFlag , ca peut me rajouter des fonctionalitées (minimiser, maximiser ...) mais pas m'en enlever (à moins que je me trompe).
    Dans mon cas, la fonction de fermeture activée par wxCLOSE_BOX qui est compris dans wxDEFAULT_FRAME_STYLE, ne peut donc pas etre changée.

    Pour l'instant j'ai adoptée une alternative: je catch la fonction OnClose() de ma vue dans laquelle j'ai mis une condition (si j'autorise la fermeture ou non) dirigée par un booleen que je definit pour chaque vue. Ca me convient, mais ca n'est pas très 'propre'.
    Merci pour tes réponses

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et si tu fais ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long Style = GetWindowStyle();
    Style &= ~wxCLOSE_BOX;
    SetWindowStyle(Style);

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    ... eh bien c'est une bonne idée, mais ca n'a pas marché !
    J'ai aussi essayé avec wxMINIMIZE_BOX pour voir si ca venait de wxCLOSE_BOX, mais ca ne marche pas. Pas moyen de changer le style une fois que la wxMDIChildFrame a été créée (ni ajouter ni supprimer des fonctions).
    Je n'ai malheureusementpas le temps de m'attarder sur ce problème que j'ai contourné en catchant la fonction OnClose() ... je vais devoir passer à la suite... mais merci pour les idées.

Discussions similaires

  1. [XL-2000] Comment "griser" un bouton
    Par cobra38 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2011, 11h43
  2. [C++.NET] Comment griser certains boutons
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 22/05/2006, 17h16
  3. Comment griser un bouton
    Par nellynew dans le forum Access
    Réponses: 7
    Dernier message: 11/05/2006, 15h27

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