Como posso criar um botão “Sim para todos” usando WinAPI?
Pergunta
Nós temos um aplicativo herdado escrito em C que usa WinAPI. Gostaríamos de adicionar um botão "Sim para todos" para algumas das nossas caixas de diálogo. Infelizmente, a função MessageBox existente não permite botões personalizados ou legendas de botão.
Qual é a melhor maneira de fazer isso? Existe um hack mancha facilmente adicionar um botão personalizado? Ou devemos criar o nosso próprio substituto MessageBox?
Solução 4
Nós terminou apenas criar o nosso próprio modelo de recurso de substituição DIALOGEX, em seguida, basta chamar DialogBox () e verificar o valor de retorno.
Referência: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box
Outras dicas
Algo assim, talvez? http://www.codeproject.com/KB/dialog/CRHYesNoToAllDialog.aspx
Ou este: Usando o Windows Hooks para melhorar MessageBox em .NET
Marc
Há um outro tipo de uma caixa de mensagem em WinAPI, desde o Windows 2000. É de SHMessageBoxCheck
.
Ele permite que você exiba uma MB_OKCANCEL
standard / MB_YESNO
/ MB_OK
tipo MessageBox
com a opção de Nunca mostrá-lo novamente, especificando que a opção padrão, nesse caso, é.
Talvez não seja exatamente o que você está procurando, mas é bastante consistente com o Windows UI.
No Vista a maior parte do shell do "Sim para todos" diálogos realmente funcionar desta forma - não há nenhum botão adicional dizendo "Sim / Não para todos." - há uma opção "Executar ação escolhida em todos os itens" em vez
No entanto, a nota na documentação me preocupa:
Esta função está disponível através do Microsoft Windows XP e Windows Server 2003. Ele pode ser alterado ou não disponível em versões posteriores do Windows.
Você também pode precisar de tomar cuidado com o ajuste de texto para torná-lo semelhante ao MessageBox
. Também MessageBox
usa uma fonte diferente em comparação com a fonte GUI padrão. E não se esqueça de jogar o som quando o diálogo aparece :)