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

MFC Discussion :

[MFC] désactiver un bouton d'un CToolBar


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut [MFC] désactiver un bouton d'un CToolBar
    bonjour,

    première chose : j'ai lu la FAQ, j'ai appliqué le principe d'activation/désactivation qui y est proposé, et ça marche

    (et là ya tout le monde qui se demande : mais il est bête lui, ça marche , alors qu'est-ce qu'il nous veut?? )

    explication : (ben oui explique, eh bouffon!! )

    projet SDI

    un certain bouton de ma CToolBar ne doit être actif que si une variable membre de mon CDocument ne pointe pas sur NULL.
    donc quand je lance mon appli, le bouton est désactivé. j'initialise la variable et le bouton devient actif.

    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
    //dans la View
     
    // Désactivation du bouton Classement de la CToolBar
    ((CMainFrame*)this->GetParentFrame())->setTestBool(false);
     
    // Effacement de l'ancienne compétition si elle existait
    if (GetDocument()->getCompetition()!=NULL)
    {
    	delete GetDocument()->getCompetition();
    	GetDocument()->setCompetition(NULL);
    }
     
    ... // initialisation de ma variable
     
    // Activation du bouton Classement de la CToolBar
    ((CMainFrame*)this->GetParentFrame())->setTestBool(true);
    maintenant, si j'ouvre un fichier de données, je voudrais que l'état de mon bouton change en fonction de ce qui se trouve dans le fichier : si la variable est NULL, on désactive le bouton, si on a pu lui donner une valeur, on active le bouton.

    idem si je fais fait Nouveau ---> ma variable = NULL, le bouton doit être désactivé

    le problème c'est que je ne sais pas où tester ma variable et changer l'état du bouton.

    - dans mon CDocument, lors de la sérialisation ??
    ----> comment changer la valeur du booléen de la MainFrm qui donne l'état du bouton ??

    - dans mon CFormView, dans le OnInitialUpdate() ??

    merci pour vos lumières

    (d'ailleurs, peut-on m'expliquer quand intervient le OnInitialUpdate?
    quand j'appuis sur Nouveau, c'est appelé. mais quand j'appuis sur Ouvrir ou Sauvegarder?)

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    OnInitialUpdate est appelé pour initialiser la view (une fois,non je suis pas belge ) ,c'est la fonction consacrée aux initialisations .
    donc dans le cas d'un projet SDI elle est appelée une fois (encore )..
    dans ton cas le positionnement de la variable serait donc a faire au niveau du document .
    (si j'ai bien compris ton pb )

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    re,

    le booléen est membre de la CMainFrm. pour l'atteindre à partir de la CFormView pas de problème (GetParentFrame()), mais à partir du CDocument, je fais comment ??

    merci

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    AfxGetMainWnd et un bon dynamic_cast

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    merci farscape et la drogue (euh... ). je cherchais une méthode de CDocument qui fasse la même choz, je pouvais chercher longtemps

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2010, 14h01
  2. [MFC] Position des boutons dans un ctoolbar
    Par tyarcaouen dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2007, 09h34
  3. Griser et désactiver un bouton
    Par skea dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/01/2005, 10h45
  4. Réponses: 9
    Dernier message: 23/02/2004, 19h14
  5. Désactiver un bouton
    Par nd25 dans le forum Flash
    Réponses: 3
    Dernier message: 06/10/2003, 13h18

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