Activation et désactivation de controle en "masse"

Signaler
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020
-
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020
-
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

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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);
}
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

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