Wie kann ich ein „Ja, alle“ Button mit WinAPI erstellen?
Frage
Wir haben eine Legacy-Anwendung in C geschrieben, die WinAPI verwendet. Wir möchten, dass ein „Ja, alle“ -Taste, um ein paar unserer Dialogfelder hinzuzufügen. Leider hat die bestehende Funktion MessageBox erlaubt nicht für benutzerdefinierte Schaltflächen oder Taste Bildunterschriften.
Was ist der beste Weg, dies zu tun? Gibt es eine glatte Hack leicht eine benutzerdefinierte Schaltfläche hinzu? Oder sollten wir unseren eigenen MessageBox Ersatz schaffen?
Lösung 4
Wir haben schließlich nur unsere eigene DIALOGEX Ersatz Ressourcenvorlage erstellen, dann rufen Sie einfach an DialogBox () und überprüfen Sie den Rückgabewert.
Referenz: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box
Andere Tipps
So etwas Ähnliches vielleicht? http://www.codeproject.com/KB/dialog/CRHYesNoToAllDialog.aspx
Oder diese: Windows-Hooks Verwenden von Enhance MessageBox in .NET
Marc
Es gibt eine andere Art von einem Meldungsfeld in WinAPI, seit Windows 2000. Es ist SHMessageBoxCheck
.
Es ermöglicht Ihnen, mit der Option, einen Standard MB_OKCANCEL
/ MB_YESNO
/ MB_OK
-Typ MessageBox
anzuzeigen nie, es zeigen erneut, indem Sie angeben, welche die Standardoption in diesem Fall ist.
Vielleicht ist es nicht genau das, was Sie suchen, aber es ist ziemlich konsistent mit Windows-Benutzeroberfläche.
In Vista die meisten der Shell „Ja für alle“ Dialoge auf diese Weise tatsächlich funktionieren - es gibt keine zusätzlichen Taste sagen: „Ja / Nein zu allen.“ - es gibt eine „gewählte Aktion Führen Sie auf alle Artikel“ Checkbox statt
Doch die Anmerkung in der Dokumentation macht mir Sorgen:
Diese Funktion ist über Microsoft Windows XP und Windows Server 2003 verfügbar Es könnte in späteren Versionen von Windows geändert oder nicht verfügbar werden.
Sie können auch Pflege des Textumbruchs ergreifen müssen, um es ähnlich zu machen MessageBox
. Auch MessageBox
verwendet eine andere Schriftart auf die Standard GUI Schrift verglichen. Und vergessen Sie nicht, den Ton zu spielen, wenn der Dialog erscheint :)