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] Comment désactiver un controle dans une CDialog


Sujet :

MFC

  1. #1
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut [MFC] Comment désactiver un controle dans une CDialog
    bonjour,

    ca parait une question debile certes ....mais je ne me suis pas encore habitué avec les composants ...donc voilà je dispose d'une CDialog et je veux manipuler l'affichage de certains composants ( desactiver / rendre invisible / rendre visbile ..) mais je ne sais pas comment proceder

    en effet j'ai :

    - un BOUTON
    - un CEDIT
    - un Group Box
    - un Label static

    que je veux rendre invisible dans mon Cdialog

    merci
    Ce que l'on fait dans sa vie...

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pour le déactiver, il faut utiliser EnableWindow et FALSE

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Et pour le rendre invisible: ShowWindow(SW_HIDE);
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #4
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    oui mais ces methodes j'y accede comment? me faudra t il une variable de controle sur chaque composant en son tyope pour y acceder !!
    Ce que l'on fait dans sa vie...

  5. #5
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    oui il me faut ca je viens de le tester c'est bon..cependant je en peux pas definir des varaible de controle pour le label et le group box alors comment faire?
    Ce que l'on fait dans sa vie...

  6. #6
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    j'ai mis ça dans le constructeur de mon CDialog en debut puis meme dans OnInitDialog()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    m_OKOCR_B.ShowWindow(FALSE); // un bouton 
    m_NUMCEDULA_B.ShowWindow(FALSE); // un cedit

    mais ça me genere une errreur de type ASSERT pointant sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BOOL CWnd::ShowWindow(int nCmdShow)
    {
    	ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); // le niveau de l'erreur est ici !!
     
    	if (m_pCtrlSite == NULL)
    		return ::ShowWindow(m_hWnd, nCmdShow);
    	else
    		return m_pCtrlSite->ShowWindow(nCmdShow);
    }
    je ne comprends pas !! ou est ce que je dois donc mettre mon code ?
    Ce que l'on fait dans sa vie...

  7. #7
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    j'ai mis ça dans le constructeur de mon CDialog en debut puis meme dans OnInitDialog()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    m_OKOCR_B.ShowWindow(FALSE); // un bouton 
    m_NUMCEDULA_B.ShowWindow(FALSE); // un cedit

    mais ça me genere une errreur de type ASSERT pointant sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BOOL CWnd::ShowWindow(int nCmdShow)
    {
    	ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); // le niveau de l'erreur est ici !!
     
    	if (m_pCtrlSite == NULL)
    		return ::ShowWindow(m_hWnd, nCmdShow);
    	else
    		return m_pCtrlSite->ShowWindow(nCmdShow);
    }
    je ne comprends pas !! ou est ce que je dois donc mettre mon code ?
    Ce que l'on fait dans sa vie...

  8. #8
    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
    je pense que tu devrais approfondir ce post de la faq:
    http://c.developpez.com/faq/vc/?page...ToWorkWithCtrl

  9. #9
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    merci pour le lien c'est tres utile j'ai pu gerer l'affichage du bouton et du Cedit , cependant je ne peux pas definir des varaible de controle pour le label et le group box alors comment faire pour gerer leur affichage a eux aussi
    Ce que l'on fait dans sa vie...

  10. #10
    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
    il faut mettre un identifiant different de IDC_STATIC ....

  11. #11
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    je viens de le faire j'ai respectivement :

    IDC_LabelNUMCED pour le label
    IDC_GPNUMCED pour le group box

    en plus mon group box a la propriété group = false ( je l'utilis epas encore mais il sera utilise pour remplacer le composant panel qui n'est pas supporté par les MFC )

    le probleme est quand je veux ajouter une variable de controle sur les deux composants :

    - pour le label : la partie variable de controle est grisé et je ne peux desormais choisir qu'un type de variable normal ( int , bool...)

    - pour le group box : la partie avraible de controle est affichée mais je ne le vois pas dans la liste des ID et sonn type est par defuat BUTTON

    - el comble c'est que quand j'essaie de cocher quand meme "variable de controle " et je ferme la fenetre "assistan,t d'ajout de variables membres" et je la reouvre je trouve les deux anomalies toujours MAIS inversement c'est a dire celle du group box est dans le label et vis versa ...c'esta dire :

    pour le group box : la partie variable de controle est grisé et je ne peux desormais choisir qu'un type de variable normal ( int , bool...)

    - pour le label : la partie avraible de controle est affichée mais je ne le vois pas dans la liste des ID et son type est par defuat BUTTON


    pourrais tu m'expliquer ca et me dire comment en finir avec ces deux mechants composants

    merci
    Ce que l'on fait dans sa vie...

  12. #12
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    bon j'ai resolu le probleme en ajoutant manuellement dans le code la variable de controle relative au label static ...et ca marche cependant pour le group box je n'arrive pas a trouver son type !!
    Ce que l'on fait dans sa vie...

  13. #13
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    je n'arrive toujours pas a trouver le type de ce composant...quelqu'un a une idee:!!!
    Ce que l'on fait dans sa vie...

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/03/2011, 07h25
  2. [Template] comment modifier un control dans une template
    Par TheBlackReverand dans le forum Silverlight
    Réponses: 1
    Dernier message: 05/06/2009, 20h55
  3. Réponses: 13
    Dernier message: 09/03/2006, 18h17
  4. Réponses: 8
    Dernier message: 01/03/2006, 18h19
  5. Réponses: 4
    Dernier message: 22/11/2005, 17h50

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