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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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 : 43
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 673
    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