2010-02-25 5 views
2

Comment désactiver toutes les commandes d'une boîte de dialogue? Je sais que je pourrais utiliser EnableWindow (FALSE); mais cela ne semble pas être une bonne idée car maintenant il n'y a aucun moyen pour l'utilisateur de cliquer sur le bouton "Ok" ou "Annuler" ou d'appuyer sur l'icône "X" pour quitter. Le dialogue est comme figé. Ce que je cherche est un moyen de désactiver tous les contrôles dans une boîte de dialogue tout en fournissant un moyen pour un utilisateur de quitter.Désactivation des contrôles de boîte aux lettres MFC

Une autre solution consiste à le faire manuellement en passant par tous les contrôles de dialogue et en les désactivant, mais cela devient fastidieux. Un moyen facile?

Merci.

Répondre

4

Désolé, mais en passant par tous les contrôles et en désactivant chacun d'eux est le moyen le plus facile.

Vous pouvez écrire une fonction générale pour ce faire en utilisant EnumChildWindows ou en utilisant une boucle appelant GetWindow(... GW_HWNDNEXT) jusqu'à ce qu'elle renvoie NULL pour la fenêtre suivante. N'oubliez pas d'ignorer la désactivation de la fenêtre IDCANCEL en tant qu'identificateur.

+0

Oui, c'est correct. – mwigdahl

+1

Et n'oubliez pas: jamais, jamais désactiver le contrôle qui a le focus! Si vous devez désactiver ce contrôle, passez d'abord le focus à un autre contrôle, * puis * désactivez-le. – Stefan

Questions connexes