Activation et désactivation de controle en "masse"

Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 19 mars 2007 à 16:23
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020 - 19 mars 2007 à 18:10
Bonjour,

Je code un petit logiciel en MFC avec visual studio 6.
Je voudrais en fait, pouvoir activer ou  désactiver des controles en masse si possible ( il s'agit en fait d'un formulaire a remplir, afin de créer un compte, donc nom, prénom, et divers renseignements....)

Il existe deux type de compte, et l'utilisateur choisi sont type de compte à l'aide d'un bouton radio, AVANT LA SAISIE, donc au début, TOUT est désactivé. Je voudrais qui suivant le type de compte, certains controles ( des editbox à 98%) soit activés.
Je voudrais donc savoir si il y a moyen de le faire en masse, et si c'est aussi possible de le faire directement en utilisant l'ID des controles.

Je vous remercie !

NixeuS

2 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 mars 2007 à 17:59
Salut,
Je fais souvent ce genre de trucs mais sans utiliser les MFC. Je pense que c'est facile à adapter. Il y'a plusieurs méthodes:
1- Si on n'utilise pas les identificateurs des controles dans le code, on peut donner à un groupe de controles le même identificateur. Ce dernier est récupérable à l'aide de GetWindowLong(hwndcontrole, GWL_ID). Tous les controles ayant cet identificateur seront activés ou désactivés selon le cas. Pour énumérer les controles enfants, on utilise FindWindowEx().
2- Affecter une valeur à chaque controle en utilisant SetWindowLong(hwndcontrole, GWL_USERDATA, valeur). Les controles d'un même groupe auront donc la même valeur. On la récupère avec GetWindowLong(hwndcontrole,GWL_USERDATA).
3- Utiliser la classe d'un controle. FindWindowEx() permet de retrouver les HWNDs en spécifiant la classe comme EDIT ou BUTTON etc.
4-Mettre les HWNDs des controles dans des tableaux. Il suffira ensuite d'utiliser une boucle pour agir sur les HWNDs des controles concernés.
Exemple d'utilisation avec FindWindowEx():
void EnableGroup(HWND parent, BOOL enable)
{
    HWND child=FindWindowEx(parent,0,0,0);
    do
    {
        LONG valeur=GetWindowLong(child, GWL_USERDATA);
        if (valeur==1) EnableWindow(child, enable);
        child=FindWindowEx(parent, child, 0,0);
    }while(child);
}
0
Nixeus Messages postés 192 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 19 octobre 2020
19 mars 2007 à 18:10
Merci de ta reponse, je comprend l'idée.
Il faudrais donc que j'arrive à regrouper différents contrôles sous un seul ID
et ensuite d'activer ou désactiver cet ID !

Reste a savoir comment faire ca en MFC.
Merci

Si quelqu'un sait comment faire ca en MFC, je suis preneur !!

Merci
0
Rejoignez-nous