Question

Nous avons une application héritée écrite en C qui utilise WinAPI. Nous aimerions ajouter un " Oui à tous " bouton à quelques unes de nos boîtes de dialogue. Malheureusement, la fonction MessageBox existante ne permet pas de boutons personnalisés ni de légendes de boutons.

Quelle est la meilleure façon de le faire? Y at-il un hack astucieux pour ajouter facilement un bouton personnalisé? Ou devrions-nous créer notre propre remplaçant MessageBox?

Était-ce utile?

La solution 4

Nous avons juste créé notre propre modèle de ressource de remplacement DIALOGEX, puis appelez simplement DialogBox () et vérifiez la valeur de retour.

Référence: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box

Autres conseils

Il existe un autre type de boîte de message dans WinAPI, depuis Windows 2000. Il s'agit d'un SHMessageBoxCheck .

Il vous permet d’afficher un élément MB_OKCANCEL / MB_YESNO / MB_OK -type MessageBox avec l'option de Ne plus la montrer, en spécifiant quelle est l'option par défaut dans ce cas.

Peut-être que ce n'est pas exactement ce que vous recherchez, mais il est assez cohérent avec l'interface utilisateur Windows.

Dans Vista, la plupart des options du shell "Oui à tous" les dialogues fonctionnent réellement de cette façon - il n'y a pas de bouton supplémentaire disant "Oui / Non à tous". - Il y a une "Action choisie sur tous les éléments". case à cocher à la place.

Cependant, la note de la documentation m'inquiète:

  

Cette fonction est disponible sous Microsoft Windows XP et Windows Server 2003. Elle peut être modifiée ou non disponible dans les versions ultérieures de Windows.

Vous devrez peut-être aussi vous occuper de l'habillage du texte pour le rendre similaire à MessageBox . De même, MessageBox utilise une police différente de la police par défaut de l'interface graphique. Et n'oubliez pas de jouer le son lorsque la boîte de dialogue s'ouvre :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top