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.
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);
}
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 !!