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

Visual C++ Discussion :

Code pour dégriser 1 boite de dialogue


Sujet :

Visual C++

  1. #1
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut Code pour dégriser 1 boite de dialogue
    Bonjour,

    Je suis en train de réaliser un projet VRML et j'ai un soucis avec l'activation du contenu d'une boite de dialogue (dans un projet application win32 sous visual C++).
    J'aimerais que je coche la checkbox "activer", tout se dégrise. J'ai essayé avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnableDlgItem(hwnd,IDC_....) et EnableDlgItemText(...)
    mais ca ne marche pas.

    Pouvez vous m'aider s'il vous plait.

    Voici le screen de la boite de dialogue en question :

    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    EnableWindow(GetDlgItem(hwnd, IDC_...), TRUE);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    merci, je vais tester !
    Je vous tiens au courant...
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  4. #4
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Bonjour,

    Je viens de tester, ca ne fonctionne pas. Pas de probleme a la compilation et execution, mais le fait de cocher la ckeckbox "activer" n'active pas les autres box de la fenetre.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(IsDlgButtonChecked(hwnd, IDC_CHECK_ACTIV_LUM_DIREC) == BST_CHECKED) {
    EnableWindow(GetDlgItem(hwnd, IDC_LUMIERE_AMBIANTE), TRUE);
    ...
    j'ai essayé aussi avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(IsDlgButtonChecked(hwnd, IDC_CHECK_ACTIV_LUM_DIREC) == BST_CHECKED) {
    EnableWindow(GetDlgItemText(hwnd, IDC_LUMIERE_AMBIANTE), TRUE);
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    OK.
    Déjà, commence par m'expliquer comment tu espères qu'EnableWindow() puisse marcher sur une fonction qui retourne du texte.

    Ensuite, ta checkbox, elle est bien en auto ? Je veux dire, si tu cliques dessus, tu es sûr qu'elle passe directement en Checked ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Oula, tu serais pas en train de me gronder ?!

    1. J'ai essayé avec GetDlgItemText au cas où, on ne sait jamais...

    2. Je n'ai pas connaissance de cette "fonction" auto, le probleme pourrait bien venir de là. Peux-tu me dire comment faire ?

    Et quel est le code pour dégriser les IDC_STATIC? Il y a une erreur de compilation avec ceux-ci.

    Merci pour ton aide !

    Pour aider, voici ma fonction :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    LRESULT CALLBACK lumdir (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lparam) { //accolade 0
     
    	TCHAR   vIDC_ROUGE[10]="0",
    			vIDC_VERT[10]="0",
    			vIDC_BLEU[10]="0",
    			vIDC_DIREC_X[10]="0",
    			vIDC_DIREC_Y[10]="0",
    			vIDC_DIREC_Z[10]="0",
    			vIDC_LUMIERE_AMBIANTE[10]="0",
    			vIDC_LUMIERE_I_LUM[10]="0";
     
     
    	switch (msg) { //accolade 1
    			case WM_INITDIALOG :
    				CheckDlgButton( hwnd, IDC_CHECK_ACTIV_LUM_DIREC, BST_UNCHECKED);
    				if(IsDlgButtonChecked(hwnd, IDC_CHECK_ACTIV_LUM_DIREC) == BST_CHECKED)
    				{
    					EnableWindow(GetDlgItem(hwnd, IDC_LUMIERE_AMBIANTE), TRUE);
    				}
    				SetDlgItemText( hwnd, IDC_ROUGE, vIDC_ROUGE);
    				SetDlgItemText( hwnd, IDC_VERT, vIDC_VERT);
    				SetDlgItemText( hwnd, IDC_BLEU, vIDC_BLEU);
    				SetDlgItemText( hwnd, IDC_DIREC_X, vIDC_DIREC_X);
    				SetDlgItemText( hwnd, IDC_DIREC_Y, vIDC_DIREC_Y);
    				SetDlgItemText( hwnd, IDC_DIREC_Z, vIDC_DIREC_Z);
    				SetDlgItemText( hwnd, IDC_LUMIERE_AMBIANTE, vIDC_LUMIERE_AMBIANTE);
    				SetDlgItemText( hwnd, IDC_LUMIERE_I_LUM, vIDC_LUMIERE_I_LUM);
     
     
    			return 0;
     
    			case WM_COMMAND :
    				switch LOWORD(wParam) { //accolade 2
     
    				case IDOK :
    					GetDlgItemText( hwnd, IDC_ROUGE, vIDC_ROUGE, 10);
    					GetDlgItemText( hwnd, IDC_VERT, vIDC_VERT, 10);
    					GetDlgItemText( hwnd, IDC_BLEU, vIDC_BLEU, 10);
    					GetDlgItemText( hwnd, IDC_DIREC_X, vIDC_DIREC_X, 10);
    					GetDlgItemText( hwnd, IDC_DIREC_Y, vIDC_DIREC_Y, 10);
    					GetDlgItemText( hwnd, IDC_DIREC_Z, vIDC_DIREC_Z, 10);
    					GetDlgItemText( hwnd, IDC_LUMIERE_AMBIANTE, vIDC_LUMIERE_AMBIANTE, 10);
    					GetDlgItemText( hwnd, IDC_LUMIERE_I_LUM, vIDC_LUMIERE_I_LUM, 10);
    fich=fopen("toto.wrl","a");					
    					fprintf(fich,"DirectionalLight {\n");
    					fprintf(fich,"ambientIntensity %s\n",vIDC_LUMIERE_AMBIANTE);
    					fprintf(fich,"color %s %s %s\n",vIDC_ROUGE, vIDC_VERT, vIDC_BLEU);
    					fprintf(fich,"direction %s %s %s\n",vIDC_DIREC_X, vIDC_DIREC_Y, vIDC_DIREC_Z);
    					fprintf(fich,"intensity %s\n",vIDC_LUMIERE_I_LUM);
    					fprintf(fich,"on TRUE \n");
     
    					fprintf(fich, "}\n");
     
     
    					fclose(fich);
    					EndDialog(hwnd,1);
    					return 0;
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Eh bien, si tu veux réagir instantanément quand la checkbox est cochée ou non, il te faut mettre un case IDC_CHECK_ACTIV_LUM_DIREC dans le switch de ton traitement de WM_COMMAND (le second switch)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Ca fonctionne, merci beaucoup !

    J'ai un dernier soucis : comment activer cette fois les IDC_STATIC de la fenetre. Si je fais EnableWindow de IDC_STATIC..., j'ai une erreur qui me dit qu'ils ne sont pas déclarés. Mais comment déclarer un IDC_... qui ne prend pas de valeur ?
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu ne peux.
    Tu dois donner une valeur autre que IDC_STATIC à tes static controls, si tu veux pouvoir les manipuler.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Ok, ca fonctionne pour les static.
    Il faut juste renommer les IDC_STATIC en IDC_n'importe_quoi comme tu l'as dit;

    Merci pour ton aide.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

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

Discussions similaires

  1. Utiliser tkinter pour afficher une boite de dialogue
    Par AmFaye dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 17/12/2013, 14h17
  2. Quel langage choisir pour faire des boites de dialogues + BDD ?
    Par dsant dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 15/03/2010, 21h30
  3. Réponses: 6
    Dernier message: 15/11/2007, 23h11
  4. Réponses: 10
    Dernier message: 20/05/2005, 11h47
  5. Réponses: 3
    Dernier message: 27/04/2005, 17h52

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