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 :

Activer/Désactiver un CButton dans une boite de dialogue


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut Activer/Désactiver un CButton dans une boite de dialogue
    Bonjour à tous,
    j'aimerais activer ou désactiver le bouton Ok de ma boîte de dialogue en fonction de la taille de mon élément (si elle est paire ou non). Mais j'ai eu bien beau chercher sur le net, rien de ce que j'ai pu trouver n'a fonctionner. Je sais le réalisé sous java avec un caretListener avec setEnabled(bool) mais pas en c++ sous visual studio 10.

    Je viens donc vers vous pour solliciter votre aide qui m'a été précieuse dans le passé.

    Merci d'avance.

    Ci-dessous : la photo de la BDD
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Je ne vois pas trop le problème.

    CWnd::EnableWindow
    http://msdn.microsoft.com/en-us/library/5kbfsahf.aspx

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut
    J'ai essayé cela sinon je n'aurai pas posté le poste si je ne trouvai pas avant ailleurs.

    voici le code que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void CLIstaseDoc::OnFiltresMoyenneur()
    {
    	CDialFiltre bddFiltre;
    	bddFiltre.m_OkFiltre.EnableWindow(false);
    	if(bddFiltre.DoModal()==IDOK)
    	{
    		m_Image=m_Image.FiltreMoyenneur(5);
    		UpdateAllViews(NULL);
    	}
    }
    bddFiltre est l'image de la boîte de dialogue ci-dessus.
    m_OkFiltre est une variable associé à mon bouton Ok.

    Je génère pas de souci, mais au moment de lancer l'action en cliquant dans le menu, j'ai le message d'erreur en pièce jointe.

    Je fais surement quelque chose de mal. Désolé, ce n'est pas facile quand on connait rien en MFC. En plus, je ne sais pas dans quelle fichier provient l'erreur mais je pense que c'est la ligne bddFiltre.m_OkFiltre.EnableWindow(false); qui la provoque.

    Je peux uploader mon projet s'il le faut.

    Merci quand même pour ta réponse aussi rapide bacelar.
    Images attachées Images attachées  

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 564
    Par défaut
    Vous pouvez acceder aux propriétés de vos controles qu'aprés avoir passé par la fonction OnInitDialog, d'ou votre message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BOOL CDialFiltre::OnInitDialog()
    {
      CDialogEx::OnInitDialog();
      m_OkFiltre.EnableWindow(FALSE);
      return TRUE;
    }
    Ensuite ajouter un gestionnaire d'évenement pour le message EN_CHANGE du controle CEdit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void CDialFiltre::OnEnChangeEdit1()
    {
    	CString strTmp;
     
    	// on recupère le texte entrée par l'utilisateur
    	GetDlgItem(IDC_EDIT1)->GetWindowText(strTmp);
     
    	if (....)
    		m_OkFiltre.EnableWindow(FALSE);
    	else
    		m_OkFiltre.EnableWindow(TRUE);
    }

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Par défaut
    Merci ddaime aussi pour la réponse je pense que ca va beaucoup m'aider. Tu es mon sauveur. Cependant j'ai des soucis avec le code que tu m'as donnée. J'ai mis ces deux codes dans mon fichier CDialFiltre.cpp et j'ai ajouté aussi les fonctions dans le .h. Mais j'ai encore des erreurs.

    Notamment sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDialogEx::OnInitDialog();
    Il me dit
    Error : Une référence d'objet non statique doit être relative à un objet spécifique
    Après pour le reste sa va, normalement il n'y a plus qu'à tester.

    Merci encore, si ça marche tu m'enlève une épine du pied.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    C'est tout simplement parce que votre class "CDialFiltre" ne dérive pas directement de "CDialogEx".

    Remplacez "CDialogEx" dans la ligne
    CDialogEx::OnInitDialog();
    par le nom de la classe mère de "CDialFiltre".

Discussions similaires

  1. Comment recuperer les info d'un formulaire dans une boite de dialogue
    Par frutix dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 11h42
  2. [VB]Afficher une liste dans une boite de dialogue
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/04/2006, 11h30
  3. Caractères spéciaux dans une boite de dialogue
    Par Rafiki dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 09/03/2006, 14h05
  4. [MFC] Dessin dans une boite de dialogue .
    Par Platypus dans le forum MFC
    Réponses: 8
    Dernier message: 21/07/2005, 11h21
  5. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25

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