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 :

comment activer/desactiver un bouton de controle


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut comment activer/desactiver un bouton de controle
    Bonjour,

    Je n'utilise pas les MFC. J'ai ajouté un bouton initialement Disabled = TRUE

    Comment réactiver ce bouton ?

    De meme si je crée une Edit Control en read-only, comment la faire passer en read/write par une commande ?

    Merci.

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomdetonbouton.EnableWindow(TRUE);

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci mais ca me donne ca:

    error C2228: left of '.EnableWindow' must have class/struct/union

  4. #4
    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
    si tu appliques la fonction à un objet qui n'est pas défini, alors c'est normal.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Le bouton existe bien, donc je ne vois vraiment pas comment faire

  6. #6
    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
    moi non plus si tu ne nous montre pas un peu de code. l'erreur que tu as provient du fait que l'objet auquel tu essaie d'appliquer la fonction n'est pas reconnu.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BOOL APIENTRY AnalyzeProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        int Select;
    	switch (uMsg)
        { 
          case WM_INITDIALOG:
    		 //SendDlgItemMessage(hDlg, IDC_WATERMARK, WM_ENABLE, TRUE, 0);
    		 IDC_WATERMARK.EnableWindow(TRUE);
    le bouton IDC_WATERMARK est disabled par defaut

  8. #8
    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
    IDC_WATERMARK n'est pas un bouton, mais un identifiant de ressource.
    c'est un nombre entier dont tu trouveras la définition dans le fichier resources.h de ton projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(IDC_WATERMARK)->EnableWindow(TRUE);

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Alors oui j'ai essayé ca, voila ce que ca me sort:
    error C2660: 'GetDlgItem' : function does not take 1 arguments
    error C2227: left of '->EnableWindow' must point to class/struct/union/generic type
    Si je remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(TRUE);
    cela me met:
    error C2039: 'EnableWindow' : is not a member of 'HWND__'
    C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : see declaration of 'HWND__'

  10. #10
    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
    ok, j'avais pas vu que tu n'utilisais pas les MFC ...
    je ne connais pas Win32 désolé

  11. #11
    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
    ce sont les memes fonctions en win32 :
    ::EnableWindow existe il faut juste lui donner le handle de fenetre en plus.
    voir doc MSDN.

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Si je remplace par Code:
    GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(TRUE);
    cela me met: Citation:
    error C2039: 'EnableWindow' : is not a member of 'HWND__'
    C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : see declaration of 'HWND__'
    tu peux me dire alors pourquoi ca marche pas ? (un peu plus que "voir doc") ca serait super sympa

    d'ailleurs meme si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(hDlg,TRUE);
    ca produit le meme resultat

  13. #13
    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
    Citation Envoyé par OyyoDams
    Si je remplace par Code:
    GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(TRUE);
    cela me met: Citation:
    error C2039: 'EnableWindow' : is not a member of 'HWND__'
    C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : see declaration of 'HWND__'
    tu peux me dire alors pourquoi ca marche pas ? (un peu plus que "voir doc") ca serait super sympa

    d'ailleurs meme si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(hDlg,IDC_WATERMARK)->EnableWindow(hDlg,TRUE);
    ca produit le meme resultat
    et bien il faut savoir ou tu te situes:
    soit tu utilises les api win32 alors les appels sont du C pas du C++
    ou alors les MFC.
    si c'est du win32:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ::EnableWindow(GetDlgItem(hDlg,IDC_WATERMARK),TRUE);
    si c'est en MFC:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // a partir de la boite de dialogue
    GetDlgItem(IDC_WATERMARK)->EnableWindow(TRUE);

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Genial ca marche merci beaucoup, c'est vrai que j'ai encore du mal a adapter du code MFC en code WIN32...
    Reste plus qu'a trouver comment faire passer en read/write une Edit Control initialement en read-only, et je pourrai dormir tranquille

    En tout cas déja merci pour le bouton

  15. #15
    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
    si tu as compris que les fonctions MFC et WIN32 qui s'appliquent aux fenetres sont identiques au detail que
    les MFC encaspulent les apis classiques dans une classe avec le handle de fenetre.
    alors regarde la faq et adapte ton appel pour du win32:
    http://c.developpez.com/faq/vc/?page=CWnd#ModifyStyle
    la fonction a utiliser est donc ModifyStyle...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    Tu peut faire comme ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EnableWindow(GetDlgItem(hdlg, 100), FALSE);
    // GetDlgItem(hdlg, 100) pour trouve le handle du boutton
    ensuite tu met ça pour le réactiver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnableWindow(GetDlgItem(hdlg, 100), TRUE);

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci mais visiblement en win32 il ne connait pas du tout la fonction ModifyStyle

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je me répons a moi meme, ca peut servir a d'autres, j'ai trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(HWND,EM_SETREADONLY, FALSE/TRUE, 0);

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/03/2008, 10h41
  2. activer/desactiver un bouton
    Par ricko06 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 21/11/2007, 16h36
  3. Réponses: 5
    Dernier message: 30/10/2007, 16h17
  4. Réponses: 2
    Dernier message: 20/10/2006, 22h10
  5. [C#][JS] Comment activer/désactiver un contrôle ?
    Par K_!!! dans le forum ASP.NET
    Réponses: 15
    Dernier message: 23/05/2006, 15h18

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