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?

Foi útil?

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top