¿Cómo puedo crear un & # 8220; Yes To All & # 8221; ¿Botón usando WinAPI?
Pregunta
Tenemos una aplicación heredada escrita en C que usa WinAPI. Nos gustaría agregar un " Sí a todos " Botón a algunos de nuestros cuadros de diálogo. Desafortunadamente, la función MessageBox existente no permite botones personalizados o títulos de botones.
¿Cuál es la mejor manera de hacerlo? ¿Hay un truco para agregar fácilmente un botón personalizado? ¿O deberíamos crear nuestro propio reemplazo de MessageBox?
Solución 4
Terminamos simplemente creando nuestra propia plantilla de recurso de reemplazo de DIALOGEX, luego simplemente llamamos a DialogBox () y verificamos el valor de retorno.
Referencia: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box
Otros consejos
¿Algo así tal vez? http://www.codeproject.com/KB/dialog/CRHYesNoToAllDialog.aspx
O esto: Uso de Windows Hooks para mejorar MessageBox en .NET
Marc
Hay otro tipo de cuadro de mensaje en WinAPI, desde Windows 2000. Es SHMessageBoxCheck
.
Le permite mostrar un MB_OKCANCEL
/ MB_YESNO
/ MB_OK
-type MessageBox
estándar con la opción de Nunca lo muestres de nuevo, especificando cuál es la opción predeterminada en ese caso.
Tal vez no sea exactamente lo que estás buscando, pero es bastante consistente con la interfaz de usuario de Windows.
En Vista, la mayor parte del shell " Sí a todos " los diálogos funcionan de esta manera: no hay un botón adicional que diga " Sí / No a todos " - hay una " Realizar la acción elegida en todos los ítems " casilla de verificación en su lugar.
Sin embargo, la nota en la documentación me preocupa:
Esta función está disponible a través de Microsoft Windows XP y Windows Server 2003. Puede modificarse o no estar disponible en versiones posteriores de Windows.
Es posible que también debas ocuparte del ajuste del texto para que sea similar a MessageBox
. Además, MessageBox
usa una fuente diferente en comparación con la fuente GUI predeterminada. Y no olvides reproducir el sonido cuando aparezca el cuadro de diálogo :)