Domanda

Abbiamo un'applicazione legacy scritta in C che utilizza WinAPI. Vorremmo aggiungere un " Sì a tutti " pulsante per alcune delle nostre finestre di dialogo. Sfortunatamente, la funzione MessageBox esistente non consente pulsanti personalizzati o didascalie di pulsanti.

Qual è il modo migliore per farlo? C'è un trucco slick per aggiungere facilmente un pulsante personalizzato? O dovremmo creare la nostra sostituzione MessageBox?

È stato utile?

Soluzione 4

Abbiamo appena finito di creare il nostro modello di risorsa di sostituzione DIALOGEX, quindi basta chiamare DialogBox () e controllare il valore restituito.

Riferimento: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box

Altri suggerimenti

Esiste un altro tipo di finestra di messaggio in WinAPI, da Windows 2000. È SHMessageBoxCheck .

Ti consente di visualizzare un MB_OKCANCEL standard / MB_YESNO / MB_OK -type MessageBox con l'opzione per Non mostrarlo mai più, specificando quale opzione predefinita in quel caso è.

Forse non è esattamente quello che stai cercando, ma è abbastanza coerente con l'interfaccia utente di Windows.

In Vista la maggior parte della shell " Sì a tutte " le finestre di dialogo funzionano in questo modo - non c'è alcun pulsante aggiuntivo che dice " Sì / No a tutti " - c'è un " Esegui l'azione scelta su tutti gli elementi " casella di controllo invece.

Comunque la Nota nella documentazione mi preoccupa:

  

Questa funzione è disponibile tramite Microsoft Windows XP e Windows Server 2003. Potrebbe essere modificata o non disponibile nelle versioni successive di Windows.

Potrebbe anche essere necessario occuparsi della disposizione del testo per renderlo simile a MessageBox . Anche MessageBox utilizza un font diverso rispetto al font GUI predefinito. E non dimenticare di riprodurre l'audio quando viene visualizzata la finestra di dialogo :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top