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?

War es hilfreich?

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

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 :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top