Activation et désactivation de controle en "masse"
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 octobre 2020
-
19 mars 2007 à 16:23
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 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
A voir également:
Activation et désactivation de controle en "masse"
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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);
}
Nixeus
Messages postés192Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention19 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 !!